[英]Java String split result
我不明白為什么這會得到3的輸出:
String[] split = "name:john;;sex:m;;".split(";");
System.out.println(Arrays.toString(split) + " size " + split.length);
我已經閱讀了Oracle文檔,但仍然不知道為什么是3。
為什么輸出為:
[name:john, , sex:m] size 3
在哪里使用“”(列表中的第二個),以及為什么“ ;;” 最后沒有出現在輸出中。
split(";")
將在每個分號之前,之間和之后獲取字符串。 因此,在操作過程中的某個時刻,您的split
數組理論上將為{"name:john","","sex:m","",""}
。 但是, split()
刪除了結尾的空字符串,因此您實際上得到了{"name:john","","sex:m"}
。
至於為什么沒有打印終端分號的原因,是因為您可以無限制地分割每個單獨的分號。 limit
是結果數組的長度。
您通常可以通過對多個字符使用正確的regex
來修復內部空字符串。 您可能要檢查split(";++")
。 如果要使用終端分號,則需要設置一個限制split(";++",2)
。
看起來Arrays.toString
用空格字符表示split
數組,而不是用String.split
返回的String數組中的實際值,它是空字符串""
。 最后的兩個分號不在輸出中,因為String.split
僅將空字符串插入其數組中您指定的分隔符出現在其數組中的位置,而不是在字符串結束之后。
''
來自您在name:john
和sex:m
之間插入的兩個分號。 它們不在末尾的事實是因為java會忽略列表末尾的空字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.