Java 字符串用“”.”(点)分割
问题:
为什么当尝试在点上分割时,以下代码是否会抛出 ArrayIndexOutOfBoundsException,但在以下情况下有效:在斜杠上拆分:
String filename = "D:/some folder/001.docx"; String extensionRemoved = filename.split(".")[0];
与:
String driveLetter = filename.split("/")[0];
解决方案:
要在文字点上拆分,点字符必须被转义以避免将其视为正则表达式模式(任何字符):
String extensionRemoved = filename.split("\.")[0];
双反斜杠 (\) 是在正则表达式字符串中创建单个反斜杠所必需的。
此外,当输入字符串只是一个点时,会出现边缘情况(“.”),因为将其拆分为一个点会导致空数组。在这种情况下,要防止出现 ArrayIndexOutOfBoundsException,请使用重载的 split(regex, limit) 方法,带有负数限制以禁用删除尾随空格:
String extensionRemoved = filename.split("\.", -1)[0];
以上是Java 字符串拆分:为什么 `split(\'.\')` 会抛出 `ArrayIndexOutOfBoundsException`?的详细内容。更多信息请关注PHP中文网其他相关文章!