今天開發,遇到了一個比較意外的問題。
1、問題描述:
String.split(”.”);//以點作爲分隔符
結果得到的數組引用時,老報下標越界錯誤,後來測試也發現長度就是爲零。
2、問題分析:
開始時,懷疑此種分隔符是一種特殊的字符,莫非是要轉義。於是加了兩個斜槓,即:String.split(”//.”),測試通過。
3、總結如下:
1)、是點和|作爲分隔符,出現此種錯誤,因爲在在split(表達式)中,表達式其實是一個正則表達式,.和|是一種有特殊含義的字符,如果要使用此種字符作爲分隔符,要使用轉義字符加以轉義方可得到正確結果。
2)如果想要使用多個分隔符,可以使用|分隔開,比如使用 @和?作爲分隔符,即爲String.split(”@|?);
3)使用String.split(””)時,往往容易忽略的一個地方就是分割的字符數組中,示例:“a/b/c////”.split(”/”)的長度不是6,而是3,因爲分割後,java中會從後面開始檢查所得的數組,把空的去掉,返回非空的3個數組。
例:
System.out.println("abcd0@|#asdf1@|#kkkw22@|#".split("@//|#")[1]);
輸入爲asdf1 , 注意split裏面“//|”轉意
符號“.”,“|”,“$”是正則表達式特殊符號,要作轉義,包括還很多,不一一舉例!使用時注意!