java split空字符_java – String.split()如果在字符串的最后部分,则忽略中间分隔符中的空值...

String s ="12/15|22:58:25|B|99.502||||A|100.501|||||";

我在打电话

int len = s.split("\\|").length;

无论如何长度是9,而不是13.

不过,如果我以这种方式修改所述字符串:

String s ="12/15|22:58:25|B|99.502||||A|100.501|||lol||";

长度是13!

怎么样?java似乎只进行某种优化,这不是必需的,因为字符串的那些部分可以填充在其他一些上下文中……

解决方法:

默认情况下,split会从结果数组中删除空尾随字符串.要关闭此机制,请使用具有负限制的split(正则表达式,限制)

split("\\|",-1)

更多细节:

split(regex)在内部返回split(regex,0)的结果,在这个方法的documentation中你可以找到(强调我的)

The limit parameter controls the number of times the pattern is applied and therefore affects the length of the resulting array.

If the limit n is greater than zero then the pattern will be applied at most n – 1 times, the array’s length will be no greater than n, and the array’s last entry will contain all input beyond the last matched delimiter.

If n is non-positive then the pattern will be applied as many times as possible and the array can have any length.

If n is zero then the pattern will be applied as many times as possible, the array can have any length, and trailing empty strings will be discarded.

标签:java,regex,split

来源: https://codeday.me/bug/20191002/1844745.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值