例如有如下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

最新文章

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

热门文章

  1. Twitter推广消息可使品牌线下销售额增长三成
  2. CS小分队第二阶段冲刺站立会议(5月28日)
  3. 超级迷宫需求分析与建议-NABCD模型
  4. HDU 1874 畅通工程续-- Dijkstra算法详解 单源点最短路问题
  5. C++ Primer Plus学习:第一章
  6. 结对编程学习fault、error、failure三种状态
  7. 【leetcode】54.Spiral Matrix
  8. ctf实验平台-成绩单
  9. inno setup 打包exe程序
  10. 第182天:HTML5——地理定位