
本文介绍使用正则表达式 replaceAll("\s*,\s*", ",") 高效去除字符串中逗号前后所有空白字符(包括空格、制表符、换行符等)的完整方法,并纠正常见转义错误与典型陷阱。
本文介绍使用正则表达式 `replaceall("\s*,\s*", ",")` 高效去除字符串中逗号前后所有空白字符(包括空格、制表符、换行符等)的完整方法,并纠正常见转义错误与典型陷阱。
在 Java 字符串处理中,清理 CSV 格式或用户输入中的冗余空白是高频需求。一个典型场景是:将 "a , b , c , d" 规范化为 "a,b,c,d"——即统一移除每个逗号前后的所有空白字符,同时保留逗号本身及非空白内容。
最简洁可靠的实现方式是使用 String.replaceAll() 配合正则表达式:
String input = "a , b , c
, d";
String output = input.replaceAll("\s*,\s*", ",");
System.out.println(output); // 输出: "a,b,c,d"✅ 关键点解析:
- \s* 表示匹配零个或多个空白字符(\ 是 Java 字符串中对 的转义,s 才是正则中“空白字符”的元字符);
- , 匹配字面量逗号;
- 整个模式 \s*,\s* 意为“任意空白 + 逗号 + 任意空白”,并将其整体替换为单个英文逗号 ",";
- ✨ 注意:绝不能写作 "//s*,//s*" 或 "s*,s*" ——前者是非法转义(// 不是 Java 转义序列),后者会因未双反斜杠导致编译错误或运行时 PatternSyntaxException。
⚠️ 注意事项:
立即学习“Java免费学习笔记(深入)”;
- replaceAll() 使用正则引擎,若需处理大量文本,可预先编译 Pattern 提升性能;
- 该方法不会影响逗号之间的内容(如 "a, b" → "a,b"),也不会误删单词内部空格(如 "hello world,foo" → "hello world,foo");
- 若需同时处理首尾空格,建议链式调用:input.trim().replaceAll("\s*,\s*", ",");
- 对于严格 CSV 解析(含引号包裹字段),应使用专用库(如 Apache Commons CSV 或 OpenCSV),而非正则简单替换。
总结:正确使用 replaceAll("\s*,\s*", ",") 是解决“逗号去空格”问题的标准实践。牢记双反斜杠转义规则、理解 s 的语义范围,并结合实际数据边界做必要预处理,即可稳健应对绝大多数格式清洗场景。


















