修正Java 字串分割中的空值刪除
在Java 字串上使用split() 方法時,您可能會遇到意外結果其中空值將從結果陣列中刪除。這可以在以下範例中看到:
String data = "5|6|7||8|9||"; String[] split = data.split("\|"); System.out.println(split.length);
在這種情況下,您期望獲得一個包含8 個值的陣列:[5, 6, 7, EMPTY, 8, 9, EMPTY, EMPTY] 。但是,僅傳回 6 個值。
此行為的原因是 split() 方法預設從結果陣列中刪除尾隨的空字串。若要停用此行為並包含空值,您可以使用split() 的重載版本:
String[] split = data.split("\|", -1);
透過將limit 參數設為負值(在本例中為-1),您可以指示該方法盡可能多次應用模式並包含任何尾隨空字串。
這是可能的,因為 split(regex) 內部呼叫 split(regex, 0),這會刪除尾隨空字串字串。透過提供負限制,您可以有效地停用此行為並強制該方法保留所有值,包括空值。
異常:
需要注意的是,刪除僅當尾隨空字串是由分割過程建立時才有意義。對於空字串,由於它無法進一步拆分,因此拆分它將產生具有單一空字串值的陣列。這是因為 split() 沒有執行任何實際的拆分,因此空字串代表原始輸入,而不是拆分操作產生的空字串。
以上是如何防止 Java 的 split() 方法刪除空字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!