
本文介绍如何在Java中高效移除字符串中所有形如“§X”(即指定字符“§”及其紧邻的任意一个后续字符)的子串,核心方法是利用String.replaceAll()配合正则表达式"§."。
本文介绍如何在java中高效移除字符串中所有形如“§x”(即指定字符“§”及其紧邻的任意一个后续字符)的子串,核心方法是利用`string.replaceall()`配合正则表达式`"§."`。
在Java字符串处理中,若需批量删除某个固定字符及其后恰好一个任意字符(无论该字符是否为字母、数字、符号或空格),最简洁、高效的方式是借助正则表达式与String.replaceAll()方法。
正则表达式中的.(点号)是一个元字符,表示“匹配除换行符外的任意单个字符”。因此,模式"§."精确匹配一个字面量§后紧跟的任意一个字符——这正是题目中“删除§及其后一个字符”的语义要求。
以下为完整示例代码:
public class StringCleanup {
public static void main(String[] args) {
String input = "§a§b Text §1§z more§x";
String result = input.replaceAll("§.", "");
System.out.println("'" + result + "'"); // 输出:' Text more'
}
}✅ 执行效果说明:
立即学习“Java免费学习笔记(深入)”;
- "§a§b Text §1§z more§x" → " Text more"
- 所有§a、§b、§1、§z、§x均被完整移除,仅保留原始文本中未被§.覆盖的部分。
⚠️ 注意事项:
- 该方案不匹配跨行场景:.默认不匹配换行符(\n、\r等)。如需支持,可启用DOTALL模式:str.replaceAll("(?s)§.", "");但绝大多数业务场景无需此扩展。
- 若§后可能无字符(如字符串以§结尾),"§."不会匹配,因此安全无副作用——这是正则贪婪/存在性匹配的天然保障。
- replaceAll()返回新字符串(String不可变),务必赋值给变量,原字符串不受影响。
? 进阶提示:
若需替换为其他内容(如空格而非完全删除),可将空字符串""替换为所需字符串,例如replaceAll("§.", " ");若需处理多个连续§(如§§ab→期望删掉§§和ab前两个字符),则需更复杂的模式(如"§.?"或循环匹配),但本例中按题意只需严格匹配“§+一个字符”。
综上,str.replaceAll("§.", "")是以最小认知成本实现目标需求的专业、健壮且符合Java惯用法的标准解法。










