Java split()方法,用於透過管道分割字串時符號(“|”)可能會產生意想不到的結果,如下例所示:
public static void main(String[] args) { String test = "A|B|C||D"; String[] result = test.split("|"); for (String s : result) { System.out.println(">"+s+"<"); } }
而不是預期的結果輸出:
>A< >B< >C< >< >D<
程式碼產生:
>< >A< >| >B< >| >C< >| >| >D<
為什麼會發生這種情況?
問題在於 split() 方法的語法。管道符號“|”在正規表示式中具有特殊意義,它代表“OR”運算符。要使用管道符號字面上作為分隔符,必須使用反斜線 () 對其進行轉義。
要修改程式碼,可以使用以下方法:
// Option 1: Escaping the pipe symbol String[] result = test.split("\|");
// Option 2: Utilizing Pattern.quote() import java.util.regex.Pattern; String[] result = test.split(Pattern.quote("|"));
透過轉義管道符號,您可以抑制其在正規表示式中的特殊狀態,從而允許將其解釋為文字分隔符號。
以上是為什麼Java的`split()`方法在用「|」分割字串時失敗以及如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!