通过之前的提问,我知道这两个方法都是进行全部替换,一个匹配字面字符,一个匹配正则表达式。但对于两个方法中的第二个参数很是不理解。例如把字符串"kjavakjava"中的k全部替换为* 写法分别是:"kjavakjava".replace("k", "*");
"kjavakjava".replaceAll("k", "//*");根据API写的replace里的第二个参数是CharSequence, replaceAll里的第二个参数是String可是这两个类有什么不同呀?为什么repalceAll里要替换成"//*"呢,它又不是正则,何必加//以区别呢?真的不理解啊!

解决方案 »

  1.   

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

  2.   

    replace和replaceAll是JAVA中常用的替换字符的方法,它们的区别是:
    1)replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了也就是字符串);
    2)replaceAll的参数是regex,即基于规则表达式的替换,比如,可以通过replaceAll("\\d", "*")把一个字符串所有的数字字符都换成星号;
    相同点是都是全部替换,即把源字符串中的某一字符或字符串全部换成指定的字符或字符串,如果只想替换第一次出现的,可以使用
    replaceFirst(),这个方法也是基于规则表达式的替换,但与replaceAll()不同的时,只替换第一次出现的字符串;
    另外,如果replaceAll()和replaceFirst()所用的参数据不是基于规则表达式的,则与replace()替换字符串的效果是一样的,即这两者也支持字符串的操作;
    还有一点注意:执行了替换操作后,源字符串的内容是没有发生改变的.举例如下:
            
            String src = new String("ab43a2c43d");        System.out.println(src.replace("3","f"));=>ab4f2c4fd.
            System.out.println(src.replace('3','f'));=>ab4f2c4fd.
            System.out.println(src.replaceAll("\\d","f"));=>abffafcffd.
            System.out.println(src.replaceAll("a","f"));=>fb43fc23d.
            System.out.println(src.replaceFirst("\\d,"f"));=>abf32c43d
            System.out.println(src.replaceFirst("4","h"));=>abh32c43d.
      

  3.   

    比如,可以通过replaceAll( "\\d ",   "* ")把一个字符串所有的数字字符都换成星号,replace就做不到,因为它不是基于规则表达式的替换。
      

  4.   

    CharSequence 是一接口,代表 char 值的一个可读序列。CharBuffer, Segment, String, StringBuffer, StringBuilder 这些类实现了此接口。
      

  5.   

    replaceAll支持正则表达式,replace不支持,只有这点区别
      

  6.   

    replace和replaceAll()的区别是这样的:
    replace的参数是字符串的形式char
    replaceAll()参数是String且支持正则表达式建议你看这个:http://www.blogjava.net/henry1451/articles/202367.html
    zz如下:
    replace和replaceAll是JAVA中常用的替换字符的方法,它们的区别是:
    1)replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了也就是字符串);
    2)replaceAll的参数是regex,即基于规则表达式的替换,比如,可以通过replaceAll("\\d", "*")把一个字符串所有的数字字符都换成星号;
    相同点是都是全部替换,即把源字符串中的某一字符或字符串全部换成指定的字符或字符串,如果只想替换第一次出现的,可以使用
    replaceFirst(),这个方法也是基于规则表达式的替换,但与replaceAll()不同的时,只替换第一次出现的字符串;
    另外,如果replaceAll()和replaceFirst()所用的参数据不是基于规则表达式的,则与replace()替换字符串的效果是一样的,即这两者也支持字符串的操作;
    还有一点注意:执行了替换操作后,源字符串的内容是没有发生改变的.举例如下:String src = new String("ab43a2c43d");System.out.println(src.replace("3","f"));=>ab4f2c4fd.
    System.out.println(src.replace('3','f'));=>ab4f2c4fd.
    System.out.println(src.replaceAll("\\d","f"));=>abffafcffd.
    System.out.println(src.replaceAll("a","f"));=>fb43fc23d.
    System.out.println(src.replaceFirst("\\d,"f"));=>abf32c43d
    System.out.println(src.replaceFirst("4","h"));=>abh32c43d.