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

最新文章

  1. 手机web——自适应网页设计(html/css控制)
  2. Android设置AlertDialog点击按钮对话框不关闭(转)
  3. 阿里云服务器出现Warning: Cannot modify header information - headers already sent by (output started at 问题的解决方法
  4. LTE Module User Documentation(翻译12)——X2切换(X2-based handover)
  5. iOS开发小技巧--UIScrollView内部子控件添加约束的注意点
  6. Java设计模式之工厂设计模式
  7. Android Learning:多线程与异步消息处理机制
  8. 引用 运行asp.net程序时候,编译器错误消息: CS0016: 未能写入输出文件“c:\WINDOWS\Microsoft.NET\Fra
  9. 【ArcGIS 10.2新特性】地理数据(Geodatabase 和database)10.2 新特性
  10. iOS- 三步快速集成社交化分享工具ShareSDK
  11. iOS如何兼容的应用程序32位系统和64Bit系统
  12. Android研究之监听自身应用被卸载代码实现
  13. caffe-ssd需要安装opencv
  14. 一个简单的struts2上传图片的例子
  15. Spring之Bean的作用域与生命周期
  16. 基于oslo_log的日志管理
  17. Python基础(9)——类
  18. github协同开发
  19. 【Alpha】Daily Scrum Meeting——blog1
  20. js输出大段html文档简便方法

热门文章

  1. MR execution in YARN
  2. URAL 1519 Formula 1(插头DP,入门题)
  3. 算法模板の数学&amp;数论
  4. [codecademy]html&amp;css
  5. python学习笔记01:安装python
  6. 结对作业二——WordCount进阶版
  7. Tomcat启动报错ERROR:transport error 202:bind failed:Address already
  8. [剑指Offer] 58.对称的二叉树
  9. 为什么 MongoDB (索引)使用B-树而 Mysql 使用 B+树
  10. veeValidate