首页 > 解决方案 > java字符串replaceAll“到\\”

问题描述

我想将字符串中的 " 替换为 \\" 以供 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("\\\\\"")));

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

标签: javareplaceall

解决方案


最好使用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

推荐阅读