ArrayIndexOutOfBoundsException

 

异常

Split后面为空的字符串被丢弃,我们想得到长度为3:

String abd =”2017,,”;
String[] searchArr=abd.split(",");
System.out.println("length:"searchArr.length);
//length:1

 

参考:http://blog.csdn.net/lululove19870526/article/details/48320021

在实际开发的时候不能保证最后一个分隔符被分的字符串为不空,所以在用split()这个方法后再取被分隔的字符串数组的时候有时候就出现数据越界的问题(最后一个分隔符被分的字符串为空)。

split 方法       该方法的作用是:将一个字符串分割为子字符串,然后将结果作为字符串数组返回。
      stringObj.split([separator,[limit]]) 
         stringObj
             必选项。要被分解的 String 对象或文字,该对象不会被split方法修改。
       separator 
            可选项。字符串或正则表达式对象,它标识了分隔字符串时使用的是一个还是多个字符。如果忽略该选项,返回包含整个字符串的单一元素数组。 
       limit(一般默认为0)
            参数控制模式应用的次数,因此影响所得数组的长度。如果该限制 n 大于 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于 n,而且数组的最后一项将包含所有超出最后匹配的定界符的输入。如果 n 为非正,那么模式将被应用尽可能多的次数,而且数组可以是任何长度如果 n 为 0,那么模式将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃

//输出结果:长度为1。
public
class Split { public static void main(String args[]){ String s = "1__________"; String[] arraystr = s.split("_"); for(int i=0;i<arraystr.length;i++){ System.out.println("lulu ="+arraystr[i]); } } }
//输出结果:长度为11。这里就将尽可能多的字符取出来。
public class Split {
    public static void main(String args[]){
        String s = "1__________";
        String[] arraystr = s.split("_",-1);
        for(int i=0;i<arraystr.length;i++){
            System.out.println("lulu ="+arraystr[i]);
        }    
    }
}
//输出结果:长度为3。这里就取3个字符,包括后面2个空字符。
public class Split {
    public static void main(String args[]){
        String s = "1__________";
        String[] arraystr = s.split("_",3);
        for(int i=0;i<arraystr.length;i++){
            System.out.println("lulu ="+arraystr[i]);
        }    
    }
}

 

posted @ 2017-07-31 15:46  小闲石  阅读(1035)  评论(0编辑  收藏  举报