標籤:exception 原因 就會 sequence 字元 string print markdown 情況
執行如下的代碼
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接受的參數是一個Regex,而+這個字元是Regex的元字元,需要進行轉義,不然就會拋出異常。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)); }}
參考
讀懂Regex就這麼簡單
JavaRegex的文法與樣本
java split函數報錯