回覆列表
  • 1 # 使用者3177994670834

    在使用String。split方法分隔字串時,分隔符如果用到一些特殊字元,可能會得不到我們預期的結果。

    我們看jdk doc中說明

    public String[] split(String regex)

    Splits this string around matches of the given regular expression。

    引數regex是一個 regular-expression的匹配模式而不是一個簡單的String,他對一些特殊的字元可能會出現你預想不到的結果,比如測試下面的程式碼:

    用豎線 | 分隔字串,你將得不到預期的結果

    String[] aa = "aaa|bbb|ccc"。

    split("|");

    //String[] aa = "aaa|bbb|ccc"。split("\\|"); 這樣才能得到正確的結果

    for (int i = 0 ; i

    System。out。println("--"+aa);

    }

    用豎 * 分隔字串執行將丟擲java。

    util。regex。PatternSyntaxException異常,用加號 + 也是如此。

    String[] aa = "aaa*bbb*ccc"。split("*");

    //String[] aa = "aaa|bbb|ccc"。split("\\*"); 這樣才能得到正確的結果

    for (int i = 0 ; i

    System。

    out。println("--"+aa);

    }

    顯然,+ * 不是有效的模式匹配規則表示式,用"\\*" "\\+"轉義後即可得到正確的結果。

  • 中秋節和大豐收的關聯?
  • 現在得癌症的人為什麼越來越多?