Java中替换 、 、 为空格但保留|分隔符的问题排查
问题分析与解决
你的代码存在两个关键问题:
1. 正则表达式错误
你写的[\t|\r|\n]+里,字符集[]中的|会被当作普通匹配字符(不是正则的“或”运算符),导致规则会把制表符、回车、换行、竖线都纳入替换范围,这就是字符串里的|被删掉的原因。
正确的正则应该是[\t\r\n]+——字符集本身就表示“匹配其中任意一个字符”,不需要额外加|。
2. 忽略了String的不可变特性
Java里的String是不可变对象,replaceAll方法不会修改原字符串,而是返回一个新的字符串实例。你只调用方法但没把返回值重新赋值给str,原字符串根本不会发生变化。
修正后的代码
如果要把制表符、回车、换行替换为空格:
String str = "Hello|MyDear|"; // 重新赋值接收新字符串 str = str.replaceAll("[\\t\\r\\n]+", " "); System.out.println(str); // 输出:Hello|MyDear|
如果是替换为空字符串(和你原代码的替换目标一致):
String str = "Hello|MyDear|"; str = str.replaceAll("[\\t\\r\\n]+", ""); System.out.println(str); // 输出:Hello|MyDear|
内容的提问来源于stack exchange,提问作者Zia
相关产品推荐
相关产品推荐

