在Java中,split()方法用於根據指定的分隔符號將字串分割成子字符串。但是,當嘗試在文字點字元“.”上拆分字串時,可能會引發 ArrayIndexOutOfBoundsException。
為了說明此問題,請考慮以下程式碼:
String filename = "D:/some folder/001.docx"; String extensionRemoved = filename.split(".")[0];
在上面的程式碼,目的是透過在點上分割檔案名稱來刪除檔案副檔名。但是,執行此程式碼將導致異常。
相反,以下程式碼可以正常工作:
String driveLetter = filename.split("/")[0];
這是由於 split() 方法解釋了 '.'。作為通配符,它匹配字串中的任何字元。要在文字點上分割,必須使用反斜線對其進行轉義:
String extensionRemoved = filename.split("\.")[0];
透過轉義點,我們表明我們要在文字字元上分割,而不是通配符。需要注意的是,反斜線字符本身就是正規表示式中的特殊字符,因此還需要使用另一個反斜線進行轉義。
此外,在點上分割時,考慮以下邊緣情況至關重要:檔案名為空或僅由一個點組成。如果您嘗試在不使用 split() 方法的 limit 參數的情況下拆分此類字串,則可能會遇到 ArrayIndexOutOfBoundsException。為了防止這種情況,請對limit 參數使用負值:
String extensionRemoved = filename.split("\.", -1)[0];
透過將限制設為負值,您可以停用從結果數組中刪除尾隨空白,從而確保您始終獲得有效的即使是空字串或單字元字串也可以建立索引。
以上是如何使用點(.)作為分隔符號正確分割Java字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!