转: 关于Java中split方法对空字符串处理问题

     当前在进行的项目中,在使用split方法时遇到一个比较隐蔽的问题,最后问题解决了,得到的一个启迪就是在使用这些函数时,真的需要认真参考文档,都怪自己太粗心,下面总结一下以加深记忆

     问题描述:

     从数据库返回的数据串,需要计算数据的个数,也就是数据表中的记录条数,每条记录包括3个字段,每个字段使用间隔字符串“γξζν”进行分隔,比如:

    data=“1γξζνaaaγξζνaaaγξζν2γξζνbbbγξζνbbbγξζν”,进行拆分

    result=data.split("γξζν"),则可以用result.length%3是否为0来判断data是否包括三个字段的数据,这样没有任何问题,但如果某些字段没有数据,比如:

    data=“1γξζνaaaγξζνaaaγξζν2γξζνbbbγξζνγξζν”,进行拆分result=data.split("γξζν"),如此result.length%3并不是我所想象的为0,究其原因,是因为split方法

 

     public String [] split (String  regex)     该方法的作用就是使用给定的表达式和限制参数 0 来调用两参数 split方法。因此,所得数组中不包括结尾空字符串

     public String [] split (String  regex, int limit)    limit 参数控制模式应用的次数,因此影响所得数组的长度。如果该限制 n 大于 0,则模式将被最多应用 n  - 1 次,数组的长度将不会大于 n ,而且数组的最后一项将包含所有超出最后匹配的定界符的输入。如果 n 为非正,那么模式将被应用尽可能多的次数,而且数组可以是任何长度。如果 n 为 0,那么模式将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃

 

    因此result=data.split("γξζν",-1),就可以得到正确结果

    注意:result.length=7,不是6,包括了最后一个γξζν后面的空字符串,因此判断记录条数用result.length-1%3是否为0

posted on 2014-01-01 21:27  seeley  阅读(1689)  评论(0编辑  收藏  举报

导航