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

Java中单引号转义替换问题:replaceAll无效求替代方法

解决Java中单引号转义的问题

你遇到的问题其实是Java字符串转义和replaceAll方法特性导致的,我来给你拆解一下原因和解决方案:

为什么你的代码没生效?

replaceAll方法的第一个参数是正则表达式,第二个参数是替换模板字符串,这里的反斜杠是特殊字符——它用来转义模板里的$等符号。你写的"\\'"在Java字符串里会被解析成\',但在替换模板中,\'其实等价于普通的单引号(因为单引号在模板里不需要转义),所以相当于把单引号替换成单引号,自然看不到变化。

两种可行的解决方案

方案1:使用replace方法(推荐)

replace方法不需要处理正则,它会直接替换所有匹配的字符序列,写法更简单:

String cityName = "chay'ekka";
System.out.println("before : " + cityName);
cityName = cityName.replace("'", "\\'");
System.out.println("after : " + cityName);

这里"\\'"在Java中会被解析为\',也就是你想要的转义单引号,运行后就能得到chay\'ekka。

方案2:正确使用replaceAll方法

如果一定要用replaceAll,需要在替换字符串里对反斜杠做双重转义:因为Java字符串里的反斜杠本身需要转义(用\\表示一个\),而replaceAll的模板里,要表示一个\又需要再转义一次,所以总共需要写四个反斜杠,再加上单引号:

String cityName = "chay'ekka";
System.out.println("before : " + cityName);
cityName = cityName.replaceAll("'", "\\\\'");
System.out.println("after : " + cityName);

这段代码同样能得到你想要的结果。

内容的提问来源于stack exchange,提问作者ekka

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:08:51