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

Java中String的替换函数:replace与replaceAll的区别的更多相关文章

  1. Java中String的hash函数分析

    转载自:http://blog.csdn.net/hengyunabc/article/details/7198533 JDK6的源码: [java] view plaincopy /** * Ret ...

  2. 【Java】整理关于java的String类,equals函数和比较操作符的区别

    初学 Java 有段时间了,感觉似乎开始入了门,有了点儿感觉但是发现很多困惑和疑问而且均来自于最基础的知识折腾了一阵子又查了查书,终于对 String 这个特殊的对象有了点感悟大家先来看看一段奇怪的程 ...

  3. Java中String、StringBuffer、StringBuilder、StringTokenizer的区别

    Java语言中,有4个类可以对字符或字符串进行操作,它们是Character.String.StringBuffer.StringTokenizer,其中Character用于单个字符操作,Strin ...

  4. JAVA中string.replace()和string.replaceAll()的区别及用法

    乍一看,字面上理解好像replace只替换第一个出现的字符(受javascript的影响),replaceall替换所有的字符,其实大不然,只是替换的用途不一样.    public String r ...

  5. java中string.trim()函数的使用

    java中string.trim()函数的的作用是去掉字符串开头和结尾的空格,防止不必要的空格导致的错误. public static void main(String arg[]){ String ...

  6. mysql 替换函数replace()实现mysql替换指定字段中的字符串

    mysql 替换字符串的实现方法: mysql中replace函数直接替换mysql数据库中某字段中的特定字符串,不再需要自己写函数去替换,用起来非常的方便. mysql 替换函数replace() ...

  7. 关于java中String的用法

    在java 中String存在许多的基本函数,接下来了解一下这些函数的基本用法 String.equals用法(这个用法比较难) String类中的equals()方法: public boolean ...

  8. JS字符串替换函数:Replace(“字符串1″, “字符串2″),

    JS字符串替换函数:Replace(“字符串1″, “字符串2″), 1.我们都知道JS中字符串替换函数是Replace(“字符串1″, “字符串2″),但是这个函数只能将第一次出现的字符串1替换掉, ...

  9. Java中String类的方法及说明

    String : 字符串类型 一.      String sc_sub = new String(c,3,2);    //      String sb_copy = new String(sb) ...

随机推荐

  1. charles 在mac下 抓取 https包

    1.  打开charles --> help --> SSL proxying --> install charles root certificate 2. 在弹出的添加证书窗口中 ...

  2. 基于 Agent 的模型入门:Python 实现隔离仿真

    2005 年诺贝尔经济学奖得主托马斯·谢林(Thomas Schelling)在上世纪 70 年代就纽约的人种居住分布得出了著名的 Schelling segregation model,这是一个 A ...

  3. text-align与vertical-align属性的区别

    1.text-align属性设置元素在水平方向(x轴)的位置 text-align:left://文本居左 text-align:center://文本居中 text-align:right: //文 ...

  4. 作业 20181030-3互评Alpha版本

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2323 组名:可以低头,但没必要 组长:付佳 组员:张俊余  李文涛  孙 ...

  5. Scrum立会报告+燃尽图(十月十九日总第十次):

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2246 项目地址:https://git.coding.net/zhang ...

  6. 王者荣耀交流协会Beta发布文案美工展示博客

    logo: 我们的logo是蓝底白字,非常简洁大气的设计感,上面印有我们的软件名称,更好的直观的彰显了我们的主题.我们的软件就是要迎合使用者,给使用者更加方便快捷的工作体验,更好的衡量自己的时间分配. ...

  7. 用vs调试项目的时候报HTTP 错误 403.14 - Forbidden

    曾经遇到过这种诡异的问题,你一定想不到,这个可能是因为你用svn合并的时候,导致了你的dll文件出了问题. 竟然可以用主干的dll替换的方式,解决掉这个问题.

  8. int 和Integer

    Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入不是对象的基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrappe ...

  9. 复利计算器Junit单元测试

    一.测试场景 测试模块 测试输入 预期结果 运行结果 bug跟踪 复利计算 (本金,利率,年限,次数) 终值     测试运算结果 (100,5,3,1) 115.76 115.76   测试输入负数 ...

  10. 将oracle数据库表使用命令的形式导入到excle文件中 亲测可用!

    main.sql 中的代码 set markup html on entmap ON spool on preformat off spool D:\新建文件夹\mick\tables.xls @ge ...