为什么这个 .split 导致数组越界错误?

Why this .split resulting in array out of bound error?

public class test {
    public static void main(String[] args) {        
        String[] arr = {"0 1.2.3.4","a b.c.d.e"};
        System.out.println(arr[0].split(".")[2]);
    }
}

我正在使用 java 8.

预期输出为3

split 的参数是 正则表达式 ,而不是文字 'this is the string you should scan for'。正则表达式中的 . 符号表示 'anything',所以它就像 " ".split(" ") - 您传递的字符串都是分隔符,因此,您没有输出。

.split(Pattern.quote(".")) 会处理的。

编辑:更详细一点——假定字符串由所有分隔符组成,split 最初会为您提供一个填充有空字符串的数组;每个位置一个 'in between' 任何字符(因为每个字符都是分隔符)。但是,默认情况下 split 会从末尾去除所有空字符串,因此您最终会得到一个长度为 0 的字符串数组。