java中String字符串的替换函数:replace与replaceAll的区别

例如有如下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中String字符串的替换函数:replace与replaceAll的区别

时间: 2024-10-07 05:25:04

java中String字符串的替换函数:replace与replaceAll的区别的相关文章

java中String的特点,字面对象和构造方法的区别

java支持两种常见的方法创建字符串 String s1 = new String("abc"); String s2 = "abc"; 两种方法都有什么区别呢 内存图如下 1,S1首先查看字符串 abc 是否存在字符串常量池中,如果存在则直接指向,不存在,则创建一个 2,S2 查看常量池中 abc 是否存在,结果已经存在了,就直接指向引用了 区别     前者s1 创建了两个对象 堆内存中的new String 和 字符串常量区的 abc     s2只创建了一个

Java中String类的isEmpty方法、null以及&quot;&quot;的区别

参考:http://blog.csdn.net/violetjack0808/article/details/50668195 内容: 一直以来对String的这三个空挺晕的,刚好同事问我,我也学习下. 从别人博客上看到的是这样的:    isEmpty()         分配了内存空间,值为空,是绝对的空,是一种有值(值 = 空)       ""         分配了内存空间,值为空字符串,是相对的空,是一种有值(值 = 空字串)       null         是未分配

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

乍一看,字面上理解好像replace只替换第一个出现的字符(受javascript的影响),replaceall替换所有的字符,其实大不然,只是替换的用途不一样.    public String replace(char oldChar,char newChar)返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 而生成的. 如 果 oldChar 在此 String 对象表示的字符序列中没有出现,则返回对此 String 对象的引用.否则,创建一个新的

SQL中的替换函数replace()使用

SQL中的替换函数replace()使用 https://www.cnblogs.com/martinzhang/p/3301224.html 语法REPLACE ( string_expression , string_pattern , string_replacement ) 参数string_expression 要搜索的字符串表达式.string_expression 可以是字符或二进制数据类型.string_pattern 是要查找的子字符串.string_pattern 可以是字符

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

java中string.trim()函数的的作用是去掉字符串开头和结尾的空格,防止不必要的空格导致的错误. public static void main(String arg[]){ String a=" abc"; String b="abc"; System.out.println(b.equals(a)); //不会相同,因为a中有空格 a=a.trim();//去掉字符串中的空格 System.out.println(a.equals(b)); } 控制台

java中String的常用方法

java中String的常用方法1.length() 字符串的长度 例:char chars[]={'a','b'.'c'}; String s=new String(chars); int len=s.length(); 2.charAt() 截取一个字符 例:char ch; ch="abc".charAt(1); 返回'b' 3. getChars() 截取多个字符 void getChars(int sourceStart,int sourceEnd,char target[]

【转载】Java中String类的方法及说明

转载自:http://www.cnblogs.com/YSO1983/archive/2009/12/07/1618564.html String : 字符串类型 一.构造函数     String(byte[ ] bytes):通过byte数组构造字符串对象.     String(char[ ] value):通过char数组构造字符串对象.     String(Sting original):构造一个original的副本.即:拷贝一个original.     String(Strin

java中String类小结

构建一个字符串 1.用字符串直接量: String message = new String("Welcome to java"); 2.用字符串直接量: String message = "Welcome to java"; 3.用字符数组 Char[] charArray = {'m', 'y'}; String message = new String(charArray); 不可变字符与限定字符串 String对象是不可变的,内容不能改变 java虚拟机为了

Java 中String常用方法

java中String的常用方法 1.length() 字符串的长度 例:char chars[]={'a','b'.'c'}; String s=new String(chars); int len=s.length(); 2.charAt() 截取一个字符 例:char ch; ch="abc".charAt(1); 返回'b' 3. getChars() 截取多个字符 void getChars(int sourceStart,int sourceEnd,char target[