java split空字符_转: 关于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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值