java中String字符串的替换函数:replace与replaceAll的区别
2016-03-21 15:27
911 查看
java中String字符串的替换函数:replace与replaceAll的区别
标签: stringjavaregex正则表达式date测试2011-08-04 10:23 70434人阅读 评论(2) 收藏 举报
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/b367fdce88ee208da19a58e7fab01f44.jpg)
分类:
java基础知识(32)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/b16356edc9d65f9de5798055c2b20c3c.jpg)
版权声明:本文为博主原创文章,未经博主允许不得转载。
例如有如下x的字符串
String x = "[kllkklk\\kk\\kllkk]";
要将里面的“kk”替换为++,可以使用两种方法得到相同的结果
replace(CharSequence target, CharSequence replacement) —— x.replace("kk", "++")
replaceAll(String regex, String replacement) —— x.replaceAll("kk", "++")
可见两个函数没有什么区别,下面将字符串中的“\\”替换为“++”
System.out.println(x.replace("\\", "++")); 没有问题
System.out.println(x.replaceAll("\\", "++")); 报错 java.util.regex.PatternSyntaxException
可见,当使用转义字符进行替换的时候,是有区别的。replaceAll的参数就是regex,是正则表达式。首先会转义,所以报错。
如果使用System.out.println(x.replaceAll("\\\\", "++"));即可完成。
那么在使用普通的字符串替换时,选用哪一个函数呢?
String x = "[kllkklk\\kk\\kllkk]";
String tmp;
//System.out.println(x.replace("[", "#").replace("]", "#"));
System.out.println(new Date().getTime());
for(int i =0;i<1000000;i++)
tmp=x.replace("kk", "--");
System.out.println(new Date().getTime());
for(int i =0;i<1000000;i++)
tmp=x.replaceAll("kk", "++");
System.out.println(new Date().getTime());
测试结果:
1312424571937
1312424574531
1312424576671
根据测试replaceAll函数要更快一些。看源码发现,replace函数里面仍使用replaceAll函数。
总体原则:当字符串无法确定是否具有转义字符时,而且也不需要转义时,建议使用replace函数
否则,使用replaceAll函数
相关文章推荐
- Java枚举常见7种用法
- JAVA中string.replace()和string.replaceAll()的区别及用
- Java RMI 简单示例
- 手把手教你整合 SpringMvc+Spring+MyBatis+Maven
- Struts 2 + Hibernate + Spring 整合要点
- Struts2 入门实例
- java 学习笔记
- Spring MVC 实践笔记
- Java数据库
- 关于java中Double类型的运算精度问题(转)
- 数组复制引用问题
- java基础经典练习题
- java线程研究
- 搭建SSH框架遇到的struts.xml找不到spring定义的bean的错误(配置文件的路径问题)
- Java中的时间表示和日期的转换
- Java String.replace()方法
- 圣思源-张龙-Java SE 第五讲(运算符续 Operator cont.).pdf
- java.net.ConnectException: Connection timed out
- 在java中进行bing翻译 引用别人的jar包
- 关于java 继承和简单多态