跳到主要内容

Java字符串replaceAll()方法

replaceAll() 方法会替换字符串中与正则表达式匹配的每个子字符串,用指定的文本替换。

示例

class Main {
public static void main(String[] args) {
String str1 = "Java123is456fun";

// 数字序列的正则表达式
String regex = "\\d+";

// 替换所有数字
// 用空格替换数字
System.out.println(str1.replaceAll(regex, " "));


}
}

// 输出: Java is fun

replaceAll() 的语法

replaceAll() 方法的语法是:

string.replaceAll(String regex, String replacement)

这里,stringString 类的一个对象。

replaceAll() 参数

replaceAll() 方法接受两个参数。

  • regex - 一个正则表达式(可以是一个普通字符串),将被替换
  • replacement - 匹配的子字符串将被此字符串替换

replaceAll() 返回值

replaceAll() 方法

  • 返回一个新字符串,其中每次出现的匹配子字符串都被 replacement 字符串替换。

示例 1:Java String replaceAll()

class Main {
public static void main(String[] args) {
String str1 = "aabbaaac";
String str2 = "Learn223Java55@";

// 数字序列的正则表达式
String regex = "\\d+";

// 所有 "aa" 出现被替换为 "zz"
System.out.println(str1.replaceAll("aa", "zz")); // zzbbzzac

// 替换数字或数字序列为一个空格
System.out.println(str2.replaceAll(regex, " ")); // Learn Java @


}
}

在上面的示例中,"\\d+" 是一个正则表达式,匹配一个或多个数字。要了解更多,请访问 Java regex

replaceAll() 中的转义字符

replaceAll() 方法的第一个参数可以是一个正则表达式或一个普通字符串。这是因为普通字符串本身就是一个正则表达式。

在正则表达式中,有些字符具有特殊含义。这些元字符包括:

\ ^ $ . | ? * + {} [] ()

如果你需要匹配包含这些元字符的子字符串,你可以使用 \ 来转义这些字符,或使用 replace() 方法。

// 程序替换 + 字符
class Main {
public static void main(String[] args) {
String str1 = "+a-+b";

// 使用 replaceAll() 替换 "+"
// 需要转义 "+"
System.out.println(str1.replaceAll("\\+", "#")); // #a-#b

// 使用 replace() 替换 "+"
System.out.println(str1.replace("+", "#")); // #a-#b

}
}

可以看到,当我们使用 replace() 方法时,不需要转义元字符。要了解更多,请访问:Java String replace()

如果你只需要替换匹配子字符串的第一次出现,请使用 Java String replaceFirst() 方法。