1. 方法概述
replace()
是 Java 中 String
类的核心方法之一,用于批量替换字符串中的内容。它支持两种操作模式:
- 替换所有出现的指定字符
- 替换所有出现的指定子字符串
⚠️ 注意:该方法返回的是新字符串,原字符串保持不变(String 的不可变性)
2. 方法签名
public String replace(char oldChar, char newChar)
public String replace(CharSequence target, CharSequence replacement)
✅ 关键点:
- 第一个重载:字符级替换(
char
) - 第二个重载:字符串级替换(
CharSequence
,支持String
/StringBuilder
等) - 两个方法都是全局替换(所有匹配项都会被替换)
3. 使用示例
3.1 字符替换场景
@Test
void whenReplaceOldCharNewChar_thenCorrect() {
String s = "wslcoms to basldung";
assertEquals("welcome to baeldung", s.replace('s', 'e'));
}
📝 执行流程:
- 扫描字符串中所有
's'
字符 - 将每个
's'
替换为'e'
- 返回新字符串
"welcome to baeldung"
3.2 子字符串替换场景
@Test
void whenReplaceTargetReplacement_thenCorrect() {
String s = "welcome at baeldung, login at your course";
assertEquals("welcome to baeldung, login to your course", s.replace("at", "to"));
}
📝 执行流程:
- 查找所有
"at"
子字符串 - 替换为
"to"
- 返回新字符串
"welcome to baeldung, login to your course"
4. 常见踩坑点
❌ 错误认知:replace()
会修改原字符串
✅ 实际行为:始终返回新字符串,原字符串不变
❌ 错误用法:用 replace()
做正则替换
✅ 正确选择:正则替换请用 replaceAll()
或 replaceFirst()
⚠️ 性能提示:对超长字符串频繁调用时,考虑使用 StringBuilder
优化
5. 最佳实践
- 链式调用处理复杂替换:
String result = input.replace(" ", "").replace("\t", "").replace("\n", "");
- 替换特殊字符时注意转义:
// 替换反斜杠需要双写 String path = "C:\\Users\\dev".replace("\\", "/");
- 空值处理:
String safeReplace(String str, String target, String replacement) { return str == null ? "" : str.replace(target, replacement); }