簡體   English   中英

Java字符串拆分結果

[英]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:johnsex:m之間插入的兩個分號。 它們不在末尾的事實是因為java會忽略列表末尾的空字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM