我有一個關于 .java.lang.String.split()String str = "aaaaa";String[] str1 = str.split("a");str = "aaaaa ";String[] str2 = str.split("a");System.out.println(Arrays.toString(str1));System.out.println(Arrays.toString(str2));結果是str1 == nullstr2 == ["", "", "", "", "", " "]為什么會這樣呢?str1
2 回答

躍然一笑
TA貢獻1826條經驗 獲得超6個贊
str1
實際上是一個空數組,而不是 。String
null
String[] java.lang.String.split(String regex)
圍繞給定正則表達式的匹配項拆分此字符串。
此方法的工作方式就像調用具有給定表達式和極限參數零的雙參數拆分方法一樣。因此,尾隨空字符串不包括在結果數組中。
如果結果僅包含空字符串,則它們都將被刪除,結果最終為空數組。str1
在示例中并非如此,其中最后一個字符串不為空(它包含單個空格),因此不會從結果中刪除(非尾隨)空字符串。str2

qq_花開花謝_0
TA貢獻1835條經驗 獲得超7個贊
只是為了補充一點,如果你仍然想用空字符串保留數組,你可以使用
String[] s_ = str.split("a", 6);
System.out.println("s_ : " + Arrays.toString(s_));
,或任何其他大于 6 的限制(應用模式的次數),而不是簡單的拆分。
后者將打印,
s_ : [, , , , , ]
添加回答
舉報
0/150
提交
取消