You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 11:15:44