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

如题所述

1、替换方式不同

【public String replace( )】

是通过用 newChar 替换此字符串中出现的所有 oldChar 而生成的。

【public String replaceAll( )】

使用给定的 replacement 字符串替换此字符串匹配给定的正则表达式的每个子字符串。

2、参数不同

【replace】的参数是char和CharSequence。可以支持字符的替换,也支持字符串的替换。

【replaceAll】的参数是regex,regex表示是正则表达式。即基于正则表达式的替换。

用法范例一:

public static void main(String[] arg) throws OgnlException {

String s =”sdf\\a\\aa”;

//把s中的反斜杠\ 替换为\\

System.out.println(s);

System.out.println(s.replaceAll(“\\\\”, “\\\\\\\\”));

System.out.println(s.replace(“\\”, “\\\\”));

}

用法范例二:

String str = "wel2come3Souhe";

String str1 = str.replace("e", "E");

String str3 = str.replace('e', 'E');

System.out.println("replace字符串==" + str1);

System.out.println("replace字符=="+str3);

String str2 = str.replaceAll("\\d", "a");//将数字替换a

System.out.println("replaceAll==" + str2);

输出结果:

replace字符串==wEl2comE3SouhE

replace字符==wEl2comE3SouhE

replaceAll==welacomeaSouhe

扩展资料

Java中的String类

1、String类是final类,因此String类不能被继承。

2、String的成员方法都默认为final方法。

3、被final修饰的类是不允许被继承的,并且该类中的成员方法都默认为final方法。

4、String类其实是通过char数组来保存字符串的。

5、String对象一旦被创建就是固定不变的。

6、对String对象的任何改变都不影响到原对象,相关的任何change操作都会生成新的对象。

参考资料:百度百科-Java

参考资料:百度百科-string

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-05-09

replace是单纯的替换字符串,而replaceAll是替换匹配的正则表达式。

以下为JDK API的doc说明:

    replace(CharSequence target, CharSequence replacement) 使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。

    replaceAll(String regex, String replacement) 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。

本回答被网友采纳
第2个回答  2016-01-09

区别主要就是replaceAll是基于规则表达多的替换,而replace是一般的基于字符或字符序列本身的替换。

Java String.replace()方法

返回一个新的字符串,用newChar替换此字符串中出现的所有oldChar


以下是java.lang.String.replace()方法的声明

public String replace(char oldChar, char newChar)  
package jason.replace;

import java.lang.*;  
  
public class StringDemo {  
  public static void main(String[] args) {  
    String str = "aacdeaa";  
    System.out.println("string = " + str);  
    // replace all 'a' characters with 'b' characters.  
    String replaceStr = str.replace('a', 'b');  
    // prints the strings after replacement  
    System.out.println("new string = " + replaceStr);  
  }  
}

让我们来编译和运行上面的程序,这将产生以下输出结果:

string = aacdeaa  

new string = bbcdebb  

public class TryDotRegEx {

public static void main(String[] args) {

// TODO Auto-generated method stub

String str = "111.3.22.11";

str=str.replaceAll("(^|\\.)(\\d)(\\.|$)","$100$2$3");

str=str.replaceAll("(^|\\.)(\\d{2})(\\.|$)","$10$2$3");

str=str.replaceAll("(^|\\.)(\\d{2})(\\.|$)","$10$2$3");

str=str.replaceAll("(^|\\.)(\\d{1})(\\.|$)","$100$2$3");

System.out.println(str);

}

}


打印结果:111,003,022,011;

正则表达式,关于String.replaceALL(..)

regex:

class t1 {

       public static void main(String a[]) {

         String s = 'E:\\jbx\\x9\\io9';

         String ss;

//把路径s中的'\'换为'\\',为何还要整8个'\'?我以为4个就行了。

         ss = s.replaceAll('\\\\', '\\\\\\\\         System.out.println('s= ' + s);

         System.out.println('ss=' + ss);

//output:  

//s= E:\jbx\x9\io9

//ss=E:\\jbx\\x9\\io9

       }

}

这里的关键是String.replaceAll()是用regular expression 来作为参数的。但是java本身的字符串对于转义符\也有类似的处理。首先,java会把“\\\\”解释成一个字符串(其中包含两个char)——“\\”这个就是你在JDK的文档里看到的。 

接下来,由于replaceAll是以正则表达式作为参数,所以“\\”被解释成一个regex。对于一个regex来说这就代表着一个字符,就是“\”。对后面的那个8个\来说,最终会被解释成“\\”。 

换言之,假设String.replaceAll()是以普通字符串,而不是regex作为参数,那么这样写代码: String target = source.replaceAll('\\', '\\\\'); 就可以了。

相似回答