我的日志显示此异常:ArrayIndexOutOfBoundsException: length=0; index=0
由以下代码触发:
public static String getInitialsFromFullName(String fullName)
{
String[] splitNames = fullName.split(" ");
String firstName = splitNames[0]; <-- Here
...
}
我试图弄清楚String.split返回空数组的条件。我的理解是,如果找不到匹配项,则返回大小为1且与原始字符串匹配的数组。
这是为Android build SDK版本21编译的Java。我期待听到我遗漏的明显细节。
split(regex)
返回结果的split(regex,0)
地方0
是limit
。现在根据文档(限制由表示n
)
如果
n
为零,则将尽可能多地应用该模式,该数组可以具有任何长度,并且 尾随的空字符串将被丢弃 。
(强调我的)
这意味着在类似
"ababaa".split("a")
首先,您将获得数组,["", "b","b","",""]
但随后的空字符串将被删除,因此您将获得数组["","b","b"]
但是,如果您的字符串仅包含split
可以与其模式匹配的元素,例如
"ababab".split("ab")
首先,数组将包含["","","",""]
(三个分割),但随后将删除空的尾随元素,这意味着将删除所有元素,这将使您拥有[]
(大小为0的数组)。
因此,要获得空数组,您需要分割仅包含可通过split
参数匹配的子字符串的字符串,因此,如果split(" ")
原始字符串必须仅由空格构建,并且其长度必须至少为1。
顺便说一句,如果原始字符串不会像“”那样为空,split("")
那么将返回具有原始字符串的数组,这意味着您仍将获得[""]
具有一个元素的数组,而不是空数组。
你可以说:“ 但你说的是,后空字符串被删除,为什么这个‘’不删除(这是落后的,也是空的)? ”。是的,但是仅当_这些字符串作为splitting结果创建时_ ,删除尾随的空字符串才有意义,因此,如果未发生split,则不需要“
cleanup”,因此result数组将包含原始字符串,如我之前对此的解释学科。
问题内容: 我得到了以下简单代码: 并且在命中时为null (引发null指针异常)。 我的问题是,即使我将其设置为在每个ip的.s上进行拆分,为什么ipArray仍为null? 问题答案: 使用,您的问题将得到解决。问题是String#split接收到一个正则表达式,点(。)符号在正则表达式中是一个特殊字符,因此您需要对其进行转义以将其解释为纯点,并且反斜杠也是转义字符在Java中,您也必须对其
问题内容: 我有两个模型,用户模型和时间表,我想用$ lookup 和猫鼬把这两个模型结合起来。 用户(型号) 时间表(型号) 现在我的查询使用猫鼬: 用户汇总 我的查询结果是一个空的array(),如下所示: 查询结果: 我不知道为什么,但是查询结果是一个 空数组 ,我试图使用$ unwind和$ match,但也无法正常工作。 编辑: 用户集合 时间表的收集 问题答案: 猫鼬在创建时将集合名称
给出这个简化的示例代码: 如何实现reduce操作的结果也是空的?
我试图将mysql查询的结果作为json返回,但是json_encode函数总是返回空白,尽管数组包含元素。 检索查询并转换为php数组: 然后返回结果: 这不返回任何内容,而我在回显以下语句时确实得到了结果: 返回“数组” 返回“Youreka!demo” 你知道我做错了什么吗? ID:2,名字:尤瑞卡!演示,地址:Italiëlei 26,邮政编码:2000,城市:Antwerpen,国家:B
我是JPCAP的新手。我在用 eth0链路Encap:Ethernet HWaddr 18:A9:05:CB:8D:FB 上行广播多播MTU:1500度量:1个RX数据包:0个错误:0个丢弃:0个溢出:0帧:0个TX数据包:0个错误:0个丢弃:0个溢出:0载波:0个冲突:0个TX队列n:1000个RX字节:0(0.0B)TX字节:0(0.0B)中断:17 lo链接Encap:本地环回 inet A
我正在玩新的Android设计库。折叠工具栏布局完美运行。但是,我无法将工具栏的默认状态设置为折叠。 我正在尝试实现这里和这里显示的解决方案 我在我的活动摘要中调用以下代码: 但是,params返回的行为为null。我的xml代码和这里一样,除了我没有使用drawer和CordinatorLayout是我的根布局。 编辑:我之前尝试过切换AppBarLayout。AppBarLayout的行为。S