在使用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("\\*"); 這樣才能得到正確的結果
System。
out。println("--"+aa);
顯然,+ * 不是有效的模式匹配規則表示式,用"\\*" "\\+"轉義後即可得到正確的結果。
在使用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);
}
顯然,+ * 不是有效的模式匹配規則表示式,用"\\*" "\\+"轉義後即可得到正確的結果。