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
所以都失败了,输出结果我也看不懂
- 为什么name2和name3相同?
- 如何将所有 " 替换为 \\"
[更新 1}
对于问题2,我找到了以下工作
System.out.println("name4=" + name.replaceAll("\"", Matcher.quoteReplacement("\\\"")));
虽然我对它起作用的原因感到迷茫...
不要使用 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
}
}
最好用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);
我想将字符串中的 " 替换为 \\" 供 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("\\\"")));
虽然我对它起作用的原因感到迷茫...
不要使用 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
}
}
最好用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);