簡介:
行為String.split() 在Java 8 中發生了顯著變化,結果數組開頭的空字串現在以不同方式處理比早期版本。如果不正確理解,此變更可能會導致意外結果。
Java 7 及之前版本:
在8 之前的Java 版本中,String.split() 將包含一個如果輸入字串的開頭存在正寬度匹配,則結果數組的開頭為空字串。但是,不包括開頭的零寬度匹配。
Java 8 及更高版本:
在 Java 8 中,在分割邏輯中加入了一個附加條件。現在,對於輸入字串開頭的零寬度匹配,空的前導子字串不包含在結果數組中。此變更旨在提高一致性並防止出現空字串。
說明:
在以下範例中,我們將字串「abc」分割為空白字串Java 7 和8:
保持相容性:
如果您需要保持與Java 7 和Java 8的相容性,可以遵循以下準則:
Java 8 和上圖:
Java 7 和先前:
其他要點:
以上是為什麼 Java 8 的 `String.split()` 有時會省略前導空字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!