1. 程式人生 > 程式設計 >淺談String.split()遇到空字串的幾種情況

淺談String.split()遇到空字串的幾種情況

Java中的我們可以利用split把字串按照指定的分割符進行分割,然後返回字串陣列

split 方法

該方法的作用是:將一個字串分割為子字串,然後將結果作為字串陣列返回。

stringObj.split([separator,[limit]])

stringObj

必選項。要被分解的 String 物件或文字,該物件不會被split方法修改。

separator

可選項。字串或正則表示式物件,它標識了分隔字串時使用的是一個還是多個字元。如果忽略該選項,返回包含整個字串的單一元素陣列。

limit

引數控制模式應用的次數,因此影響所得陣列的長度。如果該限制 n 大於 0,則模式將被最多應用 n - 1 次,陣列的長度將不會大於 n,而且陣列的最後一項將包含所有超出最後匹配的定界符的輸入。

如果 n 為非正,那麼模式將被應用盡可能多的次數,而且陣列可以是任何長度。如果 n 為 0,那麼模式將被應用盡可能多的次數,陣列可以是任何長度,並且結尾空字串將被丟棄。

會遇到以下幾種情況:

1.空字串不被解析

public class test {
 public static void main(String[] args) {
 String str = "1,2,3,4,";
 String[] arr = str.split(",");
 for (String string : arr) {
 System.out.println("str"+string);
 }
 System.out.println(arr.length);
 }
}

結果1:

淺談String.split()遇到空字串的幾種情況

2.最後一個分隔符被分的字串不為空時,其餘空字串可被解析。

public class test {
 public static void main(String[] args) {
 String str = "1,5";
 String[] arr = str.split(",");
 for (String string : arr) {
 System.out.println("str"+string);
 }
 System.out.println(arr.length);
 }
}

結果2:

淺談String.split()遇到空字串的幾種情況

但是在實際開發的時候不能保證最後一個分隔符被分的字串為不空,所以在用split()這個方法後再取被分隔的字串陣列的時候有時候就出現資料越界的問題(最後一個分隔符被分的字串為空)

想到了一個方法是split([separator,[limit]]) ,後面把limit賦值成比該字串被分隔成字元陣列後陣列的長度大很多的值,這能保證所有為空的都能被解析,這正應了api裡的解釋:

3.如果該限制 n 大於 0,則模式將被最多應用 n - 1 次(此時n為1000)

public class test {
 public static void main(String[] args) {
 String str = "1,";
 String[] s = str.split(",",1000);
 for (String string : s) {
 System.out.println("str"+string);
 }
 System.out.println(s.length);
 }
}

結果3:

淺談String.split()遇到空字串的幾種情況

4.如果把limit設定為非正,也能全部解析如:

public class test {
 public static void main(String[] args) {
 String str = "1,-1);
 for (String string : s) {
 System.out.println("str"+string);
 }
 System.out.println(s.length);
 }
}

結果4:

淺談String.split()遇到空字串的幾種情況

當String str = "1,5";時分別與上述結果3,4一致。

1.當引數為整數的時候,只需要擷取前幾個,需要幾個擷取幾個,這個不用多說。

Java程式碼

String line = "aa,bb,cc,dd," ;

System.out.println(line.split( ",6 ).length);

輸出結果為 6,limit引數指定幾個,輸出幾個,最多為 8 個

2.當引數為零的時候,和split()一樣,截圖儘可能多的字串(其實不是最多的)。

Java程式碼

String line = "aa,0 ).length);

輸出結果為 4

3.當引數為負的時候,即使後面有空的串,也會輸出到最大

Java程式碼

String line = "aa,- 1 ).length);

輸出結果為 8

注意:

1、如果用“.”作為分隔的話,必須是如下寫法,String.split("\\."),這樣才能正確的分隔開,不能用String.split(".");

2、如果用“|”作為分隔的話,String.split("\\|"),不能用String.split("|");

以上這篇淺談String.split()遇到空字串的幾種情況就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。