【发布时间】:2015-03-18 02:50:39
【问题描述】:
我的日志显示此异常:ArrayIndexOutOfBoundsException: length=0; index=0 由以下代码触发:
public static String getInitialsFromFullName(String fullName)
{
String[] splitNames = fullName.split(" ");
String firstName = splitNames[0]; <-- Here
...
}
我试图找出 String.split 返回空数组的条件。我的理解是,如果没有找到匹配,则返回一个大小为 1 的数组和原始字符串。
这是为 Android 构建 SDK 版本 21 编译的 Java。我期待听到我缺少哪些明显的细节。
【问题讨论】:
-
docs.oracle.com/javase/7/docs/api/java/lang/… 看起来你找到了答案 :) 如果没有找到匹配项,它不会返回任何内容
-
ideone.com/jEiMFw " "(或分隔符* N
" ..multiple spaces ") -
@thermite 我看到了那个文档,但我没有看到它提到特殊情况的地方。另外,使用 Selvin 的酷网站我们可以看到它是不正确的:ideone.com/8mRkd4。
-
@Selvin 谢谢,就是这样。我有点惭愧我没有尝试过这个基本案例。添加了一个单元测试并休息一下。如果您愿意,可以将您的评论作为问题添加!
-
不只是空格,即使字符串等于正则表达式,它也会返回空数组,例如,
"a".split("a")ideone.com/YTGEsv