今天发现的这个错误,原因是后来的时候,有用到字符串的截取函数,截取的时候 通常是没有问题的,但是如果字符串长度发生了变化,那么就十分容易报这个错。
首先是声明字符串的时候,如下:
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)操作时,先对操作字符串对象的存在性(是否为空)及长度进行检查后,再进行操作。