如果我这样做
String a = ""
String b = a.split(" ")[0];
它没有给出 ArrayIndexOutOfBoundException
但是当我这样做的时候
String a = " "
String b = a.split(" ")[0];
它给我 ArrayIndexOutOfBoundException
当我这样做的时候再次
String a = " abc"
String b = a.split(" ")[0];
它没有给我异常 为什么如此?
最佳答案
有点奇怪。
事实是,在您的第一个示例中,空字符串 ""是一个字符串,而不是 null。所以当你说:用标记“”拆分这个“”,模式不匹配,你得到的数组是原始字符串。和你做的一样
String a = "abc";
String b = a.split(" ")[0];
要拆分的模式不匹配,所以你得到一个标记,即原始字符串。
在第二种情况下你会得到一个异常,因为你的字符串的完整内容正是你传递给 split 的分隔符,所以你最终得到一个空数组。
如果您需要更多详细信息,请告诉我,但仅此而已。
关于java - 为什么 split 函数在 java 中表现得像这样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7662041/