【发布时间】:2015-07-26 10:13:00
【问题描述】:
我不确定为什么这个正则表达式不起作用,我想要实现的是给定文本“用户的桌面”,我需要将其转换为“用户的桌面”。
这是我的尝试:
String descrip = "user's desktop";
descrip = descrip.replaceAll("'", "\\'");
但是撇号没有被替换。我做错了什么?
【问题讨论】:
我不确定为什么这个正则表达式不起作用,我想要实现的是给定文本“用户的桌面”,我需要将其转换为“用户的桌面”。
这是我的尝试:
String descrip = "user's desktop";
descrip = descrip.replaceAll("'", "\\'");
但是撇号没有被替换。我做错了什么?
【问题讨论】:
您需要两次转义反斜杠:
String descrip = "user's desktop";
descrip = descrip.replaceAll("'", "\\\\'");
或者最好不要使用正则表达式:
descrip = descrip.replace("'", "\\'");
//=> user\'s desktop
【讨论】:
如果您想避免所有正则表达式开销,可以使用一些内置方法。比试图弄清楚要逃避什么要容易得多:
descrip.replaceAll(Pattern.quote("'"), Matcher.quoteReplacement("\\'")
【讨论】: