1. 程式人生 > >java split函數報錯

java split函數報錯

reg split函數 arr cep html app static mpi 函數

執行如下的代碼

public class App {
    public static void main(String[] args) {
        String str = "123+456+712";
        String[] strings = str.split("+");
        System.out.println(Arrays.toString(strings));
    }
}

拋出異常

Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character ‘+‘ near index 0

  • ^
    at java.util.regex.Pattern.error(Unknown Source)
    at java.util.regex.Pattern.sequence(Unknown Source)
    at java.util.regex.Pattern.expr(Unknown Source)
    at java.util.regex.Pattern.compile(Unknown Source)
    at java.util.regex.Pattern.

出現這種情況的原因是因為String類的分割方法split接受的參數是一個正則表達式,而+這個字符是正則表達式的元字符,需要進行轉義,不然就會拋出異常。String

類的split方法如下。

public String[] split(String regex) {
    return split(regex, 0);
}

java的正則中的轉義使用\\,因此修改之。\\++從元字符轉換成普通的+字符。

public class App {
    public static void main(String[] args) {
        String str = "123+456+712";
        String[] strings = str.split("\\+");
        System.out.println(Arrays.toString(strings));
    }
}

參考

讀懂正則表達式就這麽簡單
Java正則表達式的語法與示例

java split函數報錯