在使用Stringsplit方法分隔字符串時分隔符如果用到一些特殊字符可能會得不到我們預期的結果
我們經常使用public String[] split(String regex)方法來拆分一個有分隔符的字符串但是由於參數regex是一個 regularexpression的匹配模式而不是一個簡單的String所以他對一些特殊的字符可能會出現你預想不到的結果比如測試下面的代碼用豎線 | 分隔字符串你將得不到預期的結果
view plaincopy to clipboardprint?
String[] aa = aaa|bbb|cccsplit(|); //得不到預期的結果
//String[] aa = aaa|bbb|cccsplit(\\|); 這樣才能得到正確的結果
for (int i = ; i <aalength ; i++ ) {
Systemoutprintln(+aa[i]);
}
//用豎 * 分隔字符串運行將拋出異常用加號 + 也是如此
String[] aa = aaa*bbb*cccsplit(*);
//String[] aa = aaa|bbb|cccsplit(\\*); 這樣才能得到正確的結果
for (int i = ; i <aalength ; i++ ) {
Systemoutprintln(+aa[i]);
}
顯然+ * 不是有效的模式匹配規則表達式用\\* \\+轉義後即可得到正確的結果
| 分隔串時雖然能夠執行但是卻不是預期的目的\\|轉義後即可得到正確的結果
還有如果想在串中使用\字符則也需要轉義首先要表達aaaa\bbbb這個串就應該用aaaa\\bbbb如果要分隔就應該這樣才能得到正確結果
String[] aa = aaa\\bbb\\bcccsplit(\\\\);
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26182.html