为什么这个 .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 的字符串数组。
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 的字符串数组。