如何解决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
所以都失败了,我不明白输出结果
- 为什么 name2 和 name3 相同?
- 如何将所有 " 替换为 \\"
[更新 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
,使用 replace
:name.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 举报,一经查实,本站将立刻删除。