为什么这个 .split 会导致数组越界错误?
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。
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]);
}
}
I am using java 8.
the expected output is 3.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
split
的参数是一个正则表达式,而不是文字“这是您应该扫描的字符串”。正则表达式中的.
符号表示“任何东西”,所以它就像" ".split(" ")
- 您传递的字符串都是分隔符,因此,您得到无输出。.split(Pattern.quote("."))
将处理它。编辑:要详细说明 - 考虑到字符串由所有分隔符组成, split 最初为您提供一个填充空字符串的数组;一个用于任何字符“之间”的每个位置(因为每个字符都是分隔符)。但是,默认情况下
split
会删除末尾的所有空字符串,因此最终会得到一个长度为 0 的字符串数组。The argument to
split
is a regular expression, not a literal 'this is the string you should scan for'. The.
symbol in regex means 'anything', so it's like" ".split(" ")
- the string you're passing is all separators, hence, you get no output..split(Pattern.quote("."))
will take care of it.EDIT: To go in some detail - given that the string consists of all separators, split initially provides you with an array filled with empty strings; one for each position 'in between' any character (as each character is a separator). However, by default
split
will strip all empty strings off of the end, hence you end up with a 0-length string array.