為什麼在 Java 8 中 Split 有時會刪除結果陣列開頭的空字串?
在 Java 7 及更早版本中,使用空分隔符號 ("") 將產生一個同時包含前導和尾隨空字串的陣列。此行為在 Java 8 中發生了變化。
Java 8 行為
在 Java 8 中,空分隔符號上的分割不再在結果陣列中包含前導空字串。但是,它仍然會刪除尾隨的空字串。這是由於 String.split 和 Pattern.split 的實作發生了變化。
參考實作
比較Java 7 和Pattern.split 的參考實作Java 8,我們在Java 8 中發現以下新增:
此程式碼排除零長度符合位於結果陣列中輸入字串的開頭。
維護相容性
遵循 Java 8 行為(前向相容性)
為了確保跨 Java版本的行為一致,請將正規表示式修改為如下:
遵循 Java 7 行為(向後相容性)
沒有與 Java 7 或更低版本向後相容的通用解決方案。可能需要拆分的自訂實作。
以上是為什麼 Java 8 的 String.split() 處理空分隔符號的方式與先前的版本不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!