[英]Java issue String.split()
我有一個關於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 == null
str2 == ["", "", "", "", "", " "]
為什么用str1
導致?
str1
實際上是一個空的String
數組,而不是null
。
String [] java.lang.String.split(String regex)
圍繞給定正則表達式的匹配項拆分此字符串。
該方法的工作方式就像通過調用具有給定表達式且限制參數為零的二參數拆分方法。 因此,結尾的空字符串不包括在結果數組中。
如果結果僅包含空字符串,則將其全部刪除,結果str1
最終為空數組。
在str2
示例中情況並非如此,最后一個字符串不為空(它包含一個空格),因此不會從結果中刪除(非尾隨的)空字符串。
@Eran提供了正確的解釋。 只是要添加一下,如果您仍然想使用空字符串保留數組,則可以使用
String[] s_ = str.split("a", 6);
System.out.println("s_ : " + Arrays.toString(s_));
,或任何其他限制(應用模式的次數)大於6,而不是簡單的拆分。
后者將打印,
s_ : [, , , , , ]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.