JAVA String的split方法小結

1.split(String regex, int limit)
參數說明:
regex 表示字符串分割的模式,包括分隔符和正則表達式;
limit 表示控制模式應用的次數,會影響所得數組的長度。

limit>0:模式將被最多應用 n - 1 次,數組的長度將不會大於 n,而且數組的最後一項將包含所有超出最後匹配的定界符的輸入;
limit<0:模式將被應用儘可能多的次數,而且數組可以是任何長度;
limit=0:模式將被應用儘可能多的次數,數組可以是任何長度,並且結尾空字符串將被丟棄。

2.split(String regex) 本質上就是limit爲0時的情況,詳見JDK源代碼:

public String[] split(String regex) {
        return split(regex, 0);
}
 

3.場景測試

測試樣例1:limit設置爲3

      @Test
    void caseOne(){
        String str = "a|b|c||";
        String[] arr = str.split("\\|", 3);
        System.out.println(arr.length);
        System.out.println(Arrays.toString(arr));
    }

輸出結果
3
[a, b, c||]

備註:數組長度爲3,最後一項爲c||,即arr[2]爲"c||"。

測試樣例2:limit設置爲-1

     @Test
    void caseTwo(){
        String str = "a|b|c||";
        String[] arr = str.split("\\|", -1);
        System.out.println(arr.length);
        System.out.println(Arrays.toString(arr));
    }

輸出結果
5
[a, b, c, , ]
備註:數組長度爲5,最後兩項是空字符串,即arr[3]爲"",arr[4]爲""。


測試樣例3:limit設置爲0

    @Test
    void caseThree(){
        String str = "a|b|c||";
        String[] arr = str.split("\\|", 0);
        System.out.println(arr.length);
        System.out.println(Arrays.toString(arr));
    }

輸出結果
3
[a, b, c]
備註:因結尾空字符串將被丟棄,所以數組長度爲3,此時如果調用arr[3],就會報數組越界異常(java.lang.ArrayIndexOutOfBoundsException: 3)。

測試樣例4:不帶limit參數

    @Test
    void caseFour(){
        String str = "a|b|c||";
        String[] arr = str.split("\\|");
        System.out.println(arr.length);
        System.out.println(Arrays.toString(arr));
    }

輸出結果
3
[a, b, c]
備註:因結尾空字符串將被丟棄,所以數組長度爲3,此時如果調用arr[3],就會報數組越界異常(java.lang.ArrayIndexOutOfBoundsException: 3)。

測試樣例5:結尾爲空格字符時的情況

 @Test
    void caseFive(){
        String str = "a|b|c| | ";
        String[] arr = str.split("\\|");
        System.out.println(arr.length);
        System.out.println(Arrays.toString(arr));
    }

輸出結果
5
[a, b, c,  ,  ]
備註:此時arr[3]可以正常調用。

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