簡體   English   中英

在java中用'\\'替換'\\\\'字符串

[英]replacing '\\' string with '\' in java

嗨,我們有一個像"ami\\\\303\\\\261o"這樣的字符串。 我們想用\\替換\\\\

我們嘗試過以下方法:

  1. replace("\\\\", "\\")
  2. replaceAll("\\\\", "\\")

但是我們得不到合適的輸出。

要在Java正則表達式中使用,您需要兩次轉義反斜杠:

resultString = subjectString.replaceAll("\\\\\\\\", "\\\\");
  1. 在正則表達式中, \\\\表示“字面反斜杠”。
  2. 在Java字符串中, "\\\\"對單個反斜杠進行編碼。
  3. 因此,描述與單個反斜杠匹配的正則表達式的Java字符串是"\\\\\\\\"
  4. 如果你想匹配兩個反斜杠,那么它就是"\\\\\\\\\\\\\\\\"

你必須記住反斜杠逃避。 采用

public class so {
    public static void main(String[] args) {
        String s = "ami\\\\303\\\\261o";
        System.out.println(s);
        s = s.replace("\\\\", "\\");
        System.out.println(s);
    }
};

每個反斜杠都會轉義以下反斜杠並解析為兩個文字字符串\\\\\\

另請注意, String.replace返回修改后的字符串並保持原始字符串不變。

這里不需要正則表達式。 轉義斜杠並使用replace()

someString.replace('\\\\', '\\');

那是因為你的輸入String里面的\\\\因為Java Escape Character而被內部替換為\\
這意味着如果輸出你的String而不對其執行任何正則表達式,它將如下所示: "ami\\303\\261o"

一般來說,你應該記得逃避每個轉義字符本身:

\ -> escaped = \\  
\\ -> escaped = \\\\  
\\\ -> escaped = \\\\\\  
...and so on  

試試下面的代碼

 String val = "ami\\303\\261o"; 
    val =val.replaceAll("\\\\", "\\\\");        
    System.out.println(val);

Outpout將是

AMI \\ 303 \\ 261o

在這里創建一個小提琴檢查出來

Java運行示例

暫無
暫無

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

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