Java 从仰泳中逃脱,但没有达到预期效果

Java 从仰泳中逃脱,但没有达到预期效果,java,Java,为什么我需要用四个仰泳来输出一个仰泳 String str = "\""; str = str.replaceAll("\"", "\\\\\""); System.out.println(str); 返回\“ 返回“replaceAll第一个参数使用正则表达式,第二个参数使用替换字符串-您需要在替换字符串和Java代码中转义反斜杠 除非您需要正则表达式,否则只需使用String。替换不使用正则表达式的: String text = "a\\b\\c"; System.out.

为什么我需要用四个仰泳来输出一个仰泳

    String str = "\"";
    str = str.replaceAll("\"", "\\\\\"");
System.out.println(str);
返回\“


返回“

replaceAll
第一个参数使用正则表达式,第二个参数使用替换字符串-您需要在替换字符串和Java代码中转义反斜杠

除非您需要正则表达式,否则只需使用
String。替换不使用正则表达式的

String text = "a\\b\\c";
System.out.println(text); // Prints a\b\c
String replaced = text.replace("\\", "x");
System.out.println(replaced); // Prints axbxc

就我个人而言,我认为
String.replaceAll
使用正则表达式开头有点错误(
replacePattern
至少会让它变得更明显),但现在改变已经太晚了…

字符串将
\
视为
\
,不幸的是,regex也可以这样做,所以您需要
\\\\\\
:|

严格来说,
replaceAll
的第二个参数不是正则表达式,它是一个正则表达式。@axtavt:很好的捕获。我没有注意到这是第二个引起问题的争论,而不是第一个。将进行编辑。谢谢Jon,我刚刚注意到CharSequence实现了字符串,没有想到“replace”会接受字符串参数。
String text = "a\\b\\c";
System.out.println(text); // Prints a\b\c
String replaced = text.replace("\\", "x");
System.out.println(replaced); // Prints axbxc