一尘不染

JavaString.replace所有单反斜杠和双反斜杠

java

我正在尝试将转换String \something\String \\something\\using replaceAll,但是我不断遇到各种错误。我认为这是解决方案:

theString.replaceAll("\\", "\\\\");

但这给出了以下异常:

java.util.regex.PatternSyntaxException: Unexpected internal error near index 1

阅读 1252

收藏
2020-03-04

共1个答案

一尘不染

将该String#replaceAll()参数解释为正则表达式。该\是转义字符都 Stringregex。你需要对正则表达式进行两次转义:

string.replaceAll("\\\\", "\\\\\\\\");

但是你不必为此使用正则表达式,仅是因为你希望逐个字符地进行精确替换,并且这里不需要模式。因此String#replace()就足够了:

string.replace("\\", "\\\\");

更新:根据注释,你似乎想在JavaScript上下文中使用字符串。你最好使用它StringEscapeUtils#escapeEcmaScript()来覆盖更多字符。

2020-03-04