【发布时间】:2014-05-16 16:54:16
【问题描述】:
我尝试将字符串“1.1”拆分为 2 个新字符串:
String[] array = "1.1".split(".");
System.out.println(array[0]);
但我收到了java.lang.ArrayIndexOutOfBoundsException。
为什么?
【问题讨论】:
-
这个问题被问了很多次。例如查看this。
-
句号是正则表达式中的特殊字符。所以使用
"1.1".split("\\.")。 -
顺便说一句,对于这些情况,我建议
"1.1".split(Pattern.quote(".")),以提高可读性。 -
在有用的答案中添加一些内容:实际上,首先拆分会产生 4 个匹配项,每个匹配项都是一个空字符串。点匹配任何字符,因此拆分查找第一个“1”前面的空字符串,然后查找“1”和“.”之间的空字符串,依此类推。但根据method's documentation,尾随的空字符串不包括在结果数组中。因此生成的字符串数组本身的长度为 0。