使用索引访问用 String 的 split 方法得到的数组时,需做最后一个分隔符后有无内容的检查,否则会有抛 IndexOutOfBoundsException 的风险。

在使用 split 方法时,如果分隔符在字符串的末尾连续出现,那么 split 方法会将末尾的空字符串部分忽略掉。这就导致了数组长度比预期要少的情况,从而可能引发 IndexOutOfBoundsException 异常。

例子:

String str = "a,b,c,,";
String[] ary = str.split(",");

System.out.println("数组长度:" + ary.length); // 预期大于 3,结果等于 3

for (String s : ary) {
    System.out.println("数组元素:" + s);
}

在上面的代码中,字符串 "a,b,c,," 使用逗号作为分隔符进行了分割,预期得到的数组长度应该大于 3,因为有四个逗号分隔出了五个部分。然而,实际上,由于最后两个逗号之间没有内容,split 方法会忽略这部分内容,因此得到的数组长度为 3,而不是预期的大于 3。

为了避免这种情况,我们可以在使用索引访问 split 方法得到的数组时,进行额外的检查,确保最后一个分隔符后是否有内容。如果最后一个分隔符后为空,我们可以将其作为一个有效的分隔符对待,以确保得到预期的数组长度。下面是修改后的代码:

String str = "a,b,c,,";
String[] ary = str.split(",");

// 额外的检查,如果最后一个分隔符后为空,则将其作为一个有效的分隔符对待
if (str.endsWith(",")) {
    // 在末尾添加一个额外的分隔符
    String[] temp = new String[ary.length + 1];
    System.arraycopy(ary, 0, temp, 0, ary.length);
    temp[temp.length - 1] = "";
    ary = temp;
}

System.out.println("数组长度:" + ary.length); // 预期大于 3,结果
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值