微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java字符串replaceAll“到\\”

如何解决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("\\\\\"")));

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

解决方法

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

使用replaceAll需要转义\和"

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。