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