您的位置:首页 > 编程语言 > Java开发

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

2014-03-18 10:43 495 查看
当前在进行的项目中,在使用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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: