Java String replaceAll()方法

Java String类的replaceAll()方法用于替换所有与正则表达式和替换字符串匹配的字符序列。

语法

replaceAll()方法的语法如下所示:

public String replaceAll(String regex, String replacement) 

参数

regex:正则表达式

replacement:替换的字符序列

返回值

替换后的字符串

异常抛出

PatternSyntaxException:如果正则表达式的语法无效。

内部实现

public String replaceAll(String regex, String replacement) {  
        return Pattern.compile(regex).matcher(this).replaceAll(replacement);  
}  

Java String的replaceAll()方法示例:替换字符

让我们看一个替换所有出现的单个字符的示例。

文件名:ReplaceAllExample1.java

public class ReplaceAllExample1{  
public static void main(String args[]){  
String s1="javatpoint is a very good website";  
String replaceString=s1.replaceAll("a","e");//将所有出现的“a”替换为“e”
System.out.println(replaceString);  
}}  

输出:

jevetpoint is e very good website

Java String replaceAll()方法示例:替换单词

让我们看一个替换所有出现的单个单词或一组单词的示例。

文件名:ReplaceAllExample2.java

public class ReplaceAllExample2{  
public static void main(String args[]){  
String s1="My name is Khan. My name is Bob. My name is Sonoo.";  
String replaceString=s1.replaceAll("is","was");//将所有出现的“is”替换为“was”
System.out.println(replaceString);  
}}  

输出:

My name was Khan. My name was Bob. My name was Sonoo.

Java String replaceAll()方法示例:移除空格

让我们看一个移除所有出现的空格的示例。

文件名:ReplaceAllExample3.java

public class ReplaceAllExample3{  
public static void main(String args[]){  
String s1="My name is Khan. My name is Bob. My name is Sonoo.";  
String replaceString=s1.replaceAll("\\s","");  
System.out.println(replaceString);  
}}  

输出:

MynameisKhan.MynameisBob.MynameisSonoo.

Java String replaceAll()方法示例4

当存在不正确的正则表达式时,replaceAll()方法会抛出PatternSyntaxException异常。请看下面的示例。

文件名:ReplaceAllExample4.java

public class ReplaceAllExample4   
{  
// main method  
public static void main(String argvs[])  
{  
  
// input string  
String str = "For learning Java, JavaTpoint is a very good site.";  
  
System.out.println(str);  
  
String regex = "\\"; // 正则表达式无效.  
  
//调用 replaceAll() 方法会引发 PatternSyntaxException
str = str.replaceAll(regex, "JavaTpoint ");  
  
System.out.println(str);  
  
}  
}  

输出:

For learning Java, JavaTpoint is a very good site.

Exception in thread "main" java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
\
    at java.base/java.util.regex.Pattern.error(Pattern.java:2015)
    at java.base/java.util.regex.Pattern.compile(Pattern.java:1784)
    at java.base/java.util.regex.Pattern.(Pattern.java:1427)
    at java.base/java.util.regex.Pattern.compile(Pattern.java:1068)
    at java.base/java.lang.String.replaceAll(String.java:2126)
    at ReplaceExample4.main(ReplaceExample4.java:12)

Java String replaceAll()方法示例5

replaceAll()方法还可以用于在字符之间插入空格。

文件名:ReplaceAllExample5.java

public class ReplaceAllExample5   
{  
// main method  
public static void main(String argvs[])  
{  
  
// input string  
String str = "JavaTpoint";  
System.out.println(str);  
  
String regex = "";  
// 在输入字符串的每个字符前后添加一个空格.  
str = str.replaceAll(regex, " ");  
  
System.out.println(str);  
  
}  
}  

输出:

JavaTpoint
 J a v a T p o i n t

Java String replaceAll()方法示例6

replaceAll()方法甚至不接受null正则表达式,会引发NullPointerException异常。

文件名:ReplaceAllExample6.java

public class ReplaceAllExample6   
{  
// 主方法
public static void main(String argvs[])  
{  
  
// 输入字符串 
String str = "JavaTpoint";  
System.out.println(str);  
  
String regex = null; // 正则表达式为空
  
str = str.replaceAll(regex, " ");  
  
System.out.println(str);  
  
}  
}  

输出:

JavaTpoint

Exception in thread "main" java.lang.NullPointerException
    at java.base/java.util.regex.Pattern.(Pattern.java:1426)
    at java.base/java.util.regex.Pattern.compile(Pattern.java:1068)
    at java.base/java.lang.String.replaceAll(String.java:2126)
    at ReplaceAllExample6.main(ReplaceAllExample6.java:13)

标签: java, Java面试题, Java下载, java教程, java技术, Java学习, Java学习教程, Java语言, Java开发, Java入门教程, Java进阶教程, Java高级教程, Java笔试题, Java编程思想