java String replaceAll " to \\"

java String replaceAll " to \\"

我想将字符串中的 " 替换为 \\" 供 Javascript JSON.parse(...) 稍后使用,我尝试以下测试

String name = "\"ab\"c";
System.out.println("name before escape="+name);
String name1 = name.replaceAll("\"", "\\"");
System.out.println("name1="+name1);
String name2 = name.replaceAll("\"", "\\\"");
System.out.println("name2="+name2);
String name3 = name.replaceAll("\"", "\\\\"");
System.out.println("name3="+name3);

结果如下:

name before escape="ab"c
name1="ab"c
name2=\"ab\"c
name3=\"ab\"c

所以都失败了,输出结果我也看不懂

  1. 为什么name2和name3相同?
  2. 如何将所有 " 替换为 \\"

[更新 1}

对于问题2,我找到了以下工作

System.out.println("name4=" + name.replaceAll("\"", Matcher.quoteReplacement("\\\"")));

虽然我对它起作用的原因感到迷茫...

不要使用 replaceAll,请使用 replacename.replace("\"", "\\""); 原因是 replaceAll 使用正则表达式,它会弄乱你所有的格式。

class Main {
  public static void main(String[] args) {
    String name = "\"ab\"c";
    String name1 = name.replace("\"", "\\\"");
    System.out.println(name1); // Prints: \"ab\"c
  }
}

最好用replace()代替replaceAll():

String name = "\"ab\"c";
System.out.println("name before escape=" + name);
System.out.println("name1=" + name.replace("\"", "\\\""));

输出:

name before escape="ab"c
name1=\"ab\"c

使用replaceAll需要转义\和"

String name = "\"ab\"c";
System.out.println("name before escape="+name);
String name1 = name.replaceAll("\\"", "\\\\\"");
System.out.println("name1="+name1);