string.replace()执行字面量替换并返回新字符串,原字符串不变;支持字符替换replace(char,char)和子串替换replace(charsequence,charsequence),不支持正则,与replaceall()有本质区别。

Java 中 String.replace() 方法用于替换字符串中所有匹配的字符或子串,它返回一个新字符串,原字符串不变(因为 String 是不可变的)。
replace(char oldChar, char newChar)
替换所有指定的单个字符。参数是两个 char,适用于简单字符替换。
- 区分大小写,且只匹配完全相同的字符
- 如果 oldChar 不存在,返回原字符串副本
- 示例:
"apple".replace('p', 'b')→"abble"
replace(CharSequence target, CharSequence replacement)
替换所有匹配的子串(JDK 1.5+)。参数是任意字符序列(如 String、StringBuilder 等),更常用也更灵活。
- target 为空字符串(
"")时,会在每个字符之间插入 replacement - replacement 可以为
null,但会抛出NullPointerException - 示例:
"hello world".replace("l", "x")→"hexxo worxd"
注意:不是正则,不支持模式匹配
replace() 是字面量替换,和 replaceAll() 或 replaceFirst() 不同——后者使用正则表达式,需转义特殊字符(如 .、*、$ 等)。
- 想替换点号
.:用replace(".", "_")即可(无需转义) - 若误用
replaceAll(".", "_"),会把所有字符都替换成下划线(因为.在正则中表示任意字符)
常见误用与建议
替换空格、换行符等不可见字符时,要确认实际字符类型(比如 ' '、'\t'、'\n'),避免因肉眼难辨导致替换失败。
- 批量替换多个不同字符?
replace()不支持链式多目标,需多次调用或改用replaceAll()配合正则 - 性能敏感场景:对超长字符串频繁调用
replace()会产生较多中间对象,可考虑StringBuilder手动遍历处理 - 始终记得赋值接收结果:
str = str.replace("a", "b");,否则原变量不变
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











