案例1個字符串,拆分。需要幫助理解
String a = " ";
String[] b = a.split(",");
System.out.println(b.length);
打印1.爲什麼?
案例2
String a = ",,,,,,,,,,,,";
String[] b = a.split(",");
System.out.println(b.length);
打印0。爲什麼呢?
老實說,我在這裏
案例1個字符串,拆分。需要幫助理解
String a = " ";
String[] b = a.split(",");
System.out.println(b.length);
打印1.爲什麼?
案例2
String a = ",,,,,,,,,,,,";
String[] b = a.split(",");
System.out.println(b.length);
打印0。爲什麼呢?
老實說,我在這裏
虧損這一現象在文件中所提及的String.split:
此方法的工作方式類似於使用給定表達式和限制參數調用two-argument split method爲零。 因此尾隨的空字符串不包含在結果數組中。
你的第一個例子應該給出一個包含單個字符串的數組,其中包含空格。包含空格的字符串不是空的,因此它包含在結果中。
第二個示例將提供一個包含大量空字符串的數組,但是它們不包含在文檔中提到的結果數組中。
至於爲什麼Java設計者決定在limit
爲零時刪除尾隨空字符串是個好主意 - 我不知道。大多數其他編程語言/平臺不這樣做。我認爲這是一個「陷阱」 - 一個不像大多數人期望的那樣的功能。
案例1具有B排列「」在一個單一的項目 - 您的空間
案例2個空條目被刪除
在SQL Server 2005 我的數據庫名稱:一個 表名:一個 列名:A(VARCHAR(MAX)),B(INT) 值
AB
招呼| howdoudo | imfine |感謝1個
H |豪| INE |部份2 helddlo | howdddoudo | imfiddne | TDHS 3
告訴我拆分存儲過程來獲取表看起來是這樣的,即,當 B = 1 B = 2 B = 3
輸出輸出輸出 AAA 你好ħhelddlo howdoudo浩howdddoudo
imfine INE imfiddne 感謝部份TDHS
注意,如果你使用'a.split( 「,」,-1)'(或任何否定的),空的尾隨組件不會被刪除。 – 2010-07-13 22:56:31
原因是他們希望它的行爲與Perl相同。 – 2010-07-14 02:22:29
所有這些古怪都是Guava擁有自己的Splitter類的原因之一。 – 2010-07-14 02:24:15