Java中String的替换函数:replace与replaceAll的区别
2024-08-27 16:19:17
例如有如下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函数
转载自:http://www.cnblogs.com/wnlja/p/3926779.html
最新文章
- CREATE FILE encountered operating system error 5(Access is denied.)
- Eclipse设置选中高亮显示
- hosts持续更新
- Spike Notes on Theory of (Software) Transactional Memory[Doing]
- 湖南省第十二届大学生计算机程序设计竞赛 G Parenthesis
- objective-c 遍历文件夹查看文件
- C# Use Pop3Client to read gmail
- hdu5884 Sort(二分+k叉哈夫曼树)
- ASP.NET MVC 验证
- 敌情篇 ——DDoS攻击原理
- Android中View绘制优化之一---- 优化布局层次
- 网上整理的对于Rest和Restful api的理解
- Exp3 免杀原理与实践
- re模块(正则表达式)
- angular2在模板中使用属性引发Cannot read property &#39;xxx&#39; of undefined
- Java 8 新特性:3-函数(Function)接口
- Strange Way to Express Integers(中国剩余定理+不互质)
- RedHat(Linux)下安装Python3步骤
- MySQL动态开启general_log
- 晚上打开eclipse时碰到这个问题 :Workspace in use or cannot be created, choose a different one.