[英]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
所以都失敗了,我不明白 output 結果
[更新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("\"", "\\\\\""));
Output:
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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.