我这样写,结果是错误的。"a.b.c.d".replaceAll("\\.", "\\");答案是 "a.b.c.d".replaceAll("\\.", "\\\\");为什么是4个斜杠啊,想不通啊。请前辈们仔细讲下吧。

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【dabins】截止到2008-07-01 21:01:48的历史汇总数据(不包括此帖):
    发帖的总数量:21                       发帖的总分数:400                      
    结贴的总数量:7                        结贴的总分数:140                      
    无满意结贴数:1                        无满意结贴分:20                       
    未结的帖子数:14                       未结的总分数:260                      
    结贴的百分比:33.33 %               结分的百分比:35.00 %                  
    无满意结贴率:14.29 %               无满意结分率:14.29 %                  
    楼主该结一些帖子了
      

  2.   

    正则表达式\.用来匹配点字符;序列 '\\' 用来匹配 "\".
    将"a.b.c.d"中的点符号转换成反斜杠,怎么不这么写啊?"a.b.c.d".replaceAll("\.", "\\"); 
      

  3.   

    如果想避开正则表达式,用replace就行"a.b.c.d".replace(".", "\\"); 可以完成同样的功能个人感觉,这则表达式挺讨厌的,如果不是要读别人的程序,我真不愿意学这玩意儿。我个人仅在迫不得已时使用最简单的正则表达式
      

  4.   


    是的,如果对正则表达式不是很熟悉的话,建议采用 replace,大家都喜欢用 replaceAll
    估计是被方法名给迷惑了,实际上两个都是全部替换的。实际上这两个方法的内部实现都是
    采用正则表达式的,只是前者使用了正则表达式的字面模式(所谓的字面模式就是把所有的
    字符都看成是普通字符,不看成正则表达式中专用的字符)来进行替换的,而后面的那个是
    基于正则表达式的,可以用于完成一些比较复杂的替换。