首页 >Java >java教程 >Java 字符串拆分:为什么 `split(\'.\')` 会抛出 `ArrayIndexOutOfBoundsException`?

Java 字符串拆分:为什么 `split(\'.\')` 会抛出 `ArrayIndexOutOfBoundsException`?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-24 21:12:12881浏览

Java String Splitting: Why Does `split(

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn