String類下split使用注意

今天開發,遇到了一個比較意外的問題。

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裏面“//|”轉意

 

符號“.”,“|”,“$”是正則表達式特殊符號,要作轉義,包括還很多,不一一舉例!使用時注意!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章