簡體   English   中英

java 字符串替換所有“到 \\”

[英]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. 為什么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("\"", "\\\\\""));

Output:

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM