如何用单行代码将字符串中多组斜杠/反斜杠替换为单个反斜杠?
单行代码实现路径分隔符统一替换
当然可以用单行代码搞定!先说说你之前写法报错的原因,再给你正确的实现~
问题根源:转义字符的双重处理
你之前尝试的path.replaceAll("[\\/]+", "\\")会报错,核心原因是Java字符串和正则表达式对反斜杠的双重转义要求:
- 在正则表达式里,要匹配字面量
\,需要写成\\;而在Java字符串中,每一个\都要转义成\\,所以正则里的\\在Java字符串里要写成\\\\。 - 同样,
replaceAll的第二个替换参数里,字面量\也需要转义:在替换模板中,\是特殊字符(用来引用捕获组,比如$1),所以要表示一个字面量\,需要写成\\;对应到Java字符串里,就是\\\\。
正确的单行代码实现
String path = "H\\\\\\ello///Wo\rld\!////"; path = path.replaceAll("[/\\\\]+", "\\\\");
代码解释
- 正则部分
[/\\\\]+:
解析后对应的正则表达式是[/\\]+,表示匹配一个或多个连续的/或者\,完美覆盖你要合并的两种分隔符。 - 替换部分
\\\\:
解析后会在结果中生成单个\,实现把连续的分隔符统一替换成单个反斜杠的需求。
验证效果
输入示例经过替换后,会得到你期望的结果:String path = "H\ello\Wo\rld\!\\";
对比你之前的三步方案,这个单行代码一步完成了「统一转义→合并连续分隔符→转义回反斜杠」的全部逻辑,简洁高效。
内容的提问来源于stack exchange,提问作者xentus
相关产品推荐
相关产品推荐

