通过之前的提问,我知道这两个方法都是进行全部替换,一个匹配字面字符,一个匹配正则表达式。但对于两个方法中的第二个参数很是不理解。例如把字符串"kjavakjava"中的k全部替换为* 写法分别是:"kjavakjava".replace("k", "*");
"kjavakjava".replaceAll("k", "//*");根据API写的replace里的第二个参数是CharSequence, replaceAll里的第二个参数是String可是这两个类有什么不同呀?为什么repalceAll里要替换成"//*"呢,它又不是正则,何必加//以区别呢?真的不理解啊!
"kjavakjava".replaceAll("k", "//*");根据API写的replace里的第二个参数是CharSequence, replaceAll里的第二个参数是String可是这两个类有什么不同呀?为什么repalceAll里要替换成"//*"呢,它又不是正则,何必加//以区别呢?真的不理解啊!
解决方案 »
- Java中String接受的最大字符串的长度是多少?
- URLConnection的方法中getContentEncoding()方法返回Null时,如何获得该连接对应的网页的编码方式?
- JAVA内存回收问题
- 初学Java:为什么在Applet程序中没有main函数,程序也可以运行?
- 急!急!急!大虾们来帮忙啊!编译生成新的.class文件后..........
- java 如何访问lotus的服务器?
- 呜呜呜呜,谁来救救我!
- 问几个java初学者常问的问题,(回答就有很多分!)还是刚才的哪个帖子!
- 如何实现一个文件目录的树形显示?
- 我之前用小脚本写的能查询出来,完事改成el表达式,查询不了
- SocketChannel 使用原理
- 将"a.b.c.d"中的点符号转换成反斜杠
楼主【dabins】截止到2008-07-04 14:20:44的历史汇总数据(不包括此帖):
发帖的总数量:22 发帖的总分数:420
结贴的总数量:8 结贴的总分数:140
无满意结贴数:1 无满意结贴分:20
未结的帖子数:14 未结的总分数:280
结贴的百分比:36.36 % 结分的百分比:33.33 %
无满意结贴率:12.50 % 无满意结分率:14.29 %
楼主该结一些帖子了
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.
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.