Java 中split 方法的注意点

        字符串处理中的split函数虽然比较慢,但是在切分字符串时方便省事。 而在一些格式化数据较好的情况下,切分效果满意。但是在批处理数据时,如果在schema一定的前提下,部分行数据 缺失,这样采用统一的split的切分正则表达式,则会容易出现一些问题。 参考博客 Java中String的split方法的一些疑问和实验

        重要的是博客的结论:     

  1.     当字符串只包含分隔符时,返回数组没有元素;
  2.     当字符串不包含分隔符时,返回数组只包含一个元素(该字符串本身);
  3.     字符串最尾部出现的分隔符可以看成不存在,不影响字符串的分隔;
  4.     字符串最前端出现的分隔符将分隔出一个空字符串以及剩下的部分的正常分隔;

       由于上述规律的存在,在实际批处理数据格式的时候,难免会因为某些数据行缺失的问题,而不能使用统一的split正则表达式。一种解决的方法是将split改为subindexOf的形式(运行快)。 另一种是 采用replace 字符串某些元素,以及再使用 trim方法,去除字符串首尾空白字符。

       比如对schema是 name \t id \t position \t statics\n 的数据,如果四个分量有值的话,用split("\t“)可以很好的划分为四个部分。 但是可能存在 name\t\t\t 的形式,这样只能划分为1个部分,而且后面不是所谓的划分结果空,而是无法划分, 即不存在 split[1] split[2] split[3]等值。 name\t\tposition\t 是划分为三个部分,其中第二个部分划分结果为空。

      可以先replace("\t", " \t "), 这样可以保证每个划分的部分都有元素。 然后再对每个部分,使用trim方法,去除字符串首尾空白字符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值