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)
这里,string
是 String
类的一个对象。
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() 方法。