StringIndexOutOfBoundsException 字符串越界错误

今天发现的这个错误,原因是后来的时候,有用到字符串的截取函数,截取的时候 通常是没有问题的,但是如果字符串长度发生了变化,那么就十分容易报这个错。

首先是声明字符串的时候,如下:

  private static String[] nicks = {"aa","AA7676","ss","fd","ddf","dd","ds","xdfd","Abc","eee","xxx","eoe","fdfdfdf","gryry","iloveyou"};

这里是网上找的一个例子,这个是可以运行成功的,其中有一个截取字符串的地方

String lastCatalog = converterToFirstSpell(mNicks[position-1]).substring(0, 1);    上述的字符串中长度至少都是2的,所以此时不会报错,但是当我更改字符串的时候,其长度发生变化,是有可能长度不够的,此时在截取字符串的话就会报这个,字符串越界错误。


那么如何解决,因为这里要用到substring 函数,  substring函数 返回的字符串 包括start处的字符,不包括end处的字符。

    如果 start 与 end 相等,那么该方法返回的就是一个空串(即长度为 0 的字符串)。
   如果 start 比 end 大,那么该方法在提取子串之前会先交换这两个参数。
   如果 start 或 end 为负数,那么它将被替换为 0。

回到正题,如何解决这个错误呢?

对字符串进行截取(substring, charAt)、转换为字节数组(getBytes),字符数组转换为字符串(valueOf)操作时,先对操作字符串对象的存在性(是否为空)及长度进行检查后,再进行操作。  


  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值