Java中String替换有replace()(字面量全量替换)、replaceFirst()(正则首匹配)和replaceAll()(正则全匹配)三个方法,分别适用于简单文本、精准单次及复杂模式替换。

Java 中 String 的替换主要通过 replace()、replaceFirst() 和 replaceAll() 三个方法实现,它们分别适用于字面量替换、单次正则替换和全部正则替换。
用 replace() 替换固定字符串
replace() 接收两个 CharSequence(通常是 String),执行**全量、非正则、区分大小写**的字面量替换。它不支持正则语法,性能高且安全,适合简单文本替换。
- 调用示例:
"hello world".replace("l", "x")→"hexxo worxd" - 注意:即使 oldChar 是正则元字符(如
.、*),也会被当作普通字符处理 - 若要替换空字符串(""),会抛出
java.lang.IllegalArgumentException
用 replaceFirst() 替换首个匹配的正则表达式
replaceFirst() 接收一个正则表达式字符串和一个替换字符串,只替换**第一个匹配项**,其余保持不变。适合需要精准控制替换次数的场景。
- 调用示例:
"a1b2c3".replaceFirst("\d", "X")→"aXb2c3" - 正则中需注意转义:比如替换点号
.,应写成"\." - 替换字符串中可使用
$1、$2引用捕获组,例如:"abc123def".replaceFirst("(\d+)", "[$1]")→"abc[123]def"
用 replaceAll() 替换所有匹配的正则表达式
replaceAll() 与 replaceFirst() 接口一致,但会替换**所有匹配项**。它是基于正则引擎的全量替换,功能强大但也更易出错。
立即学习“Java免费学习笔记(深入)”;
- 调用示例:
"a1b2c3".replaceAll("\d", "X")→"aXbXcX" - 若正则表达式非法(如括号不配对),运行时抛出
PatternSyntaxException - 替换字符串中同样支持
$n捕获组引用;若需字面量美元符或反斜杠,需双写:"\$"表示$,"\\+"表示+
补充说明:为什么没有 replaceAll(String, String)?
String 类没有提供纯字面量的“全部替换”重载方法(即不走正则),因为 replace(CharSequence, CharSequence) 已经承担了这个角色——它内部按字面量逐个查找替换,等价于“安全版 replaceAll”。所以日常替换固定文本,优先用 replace(),既清晰又避免正则误用。


















