java中split的坑,用的时候一定要小心

有的时候总觉得split很好用,屡试不爽,但他偶尔也会给你一点小惊喜。

1.一些特殊业务场景,对自己拼接出来的字符串使用split分割,假设我们已经知道了这个长度,也许我们会这么写。

String ids = "1,2,3,";
// 对,你没有看错,我故意这么写的,根据我们的设想这里一定是四个值拼接的,即时有空字符串,使用split神器也可以成功分割出长度为4的数组。

// 所以我这么写了。
String[] idArr = ids.split(",");
String idA = idArr[0];
String idB = idArr[1];
String idC = idArr[2];
String idD = idArr[3];

// 好的...你突然发现挂了,抛出数组下标越界了。

// 新手,或者不常用split的人总是会认为idArr的长度应该是4,实际上他只有3。是的这就是java中的split,因为你在别的地方用过的split不是这样的,比如javascript中的split,如果是这个例子的话,那么毫无疑问他的长度是4,最后一个为""空字符串。

// 实际上java的split有一个重载方法,是两个参数的,ok第二个参数就是你期望数组的长度,当然如果你写100,那么你也不可能得到长度为100的数组在本例当中,他是个limit的概念。
String[] idArr = ids.split(",",4); // 这有写长度是4
String[] idArr = ids.split(",",100); // 这有写长度也是4
String[] idArr = ids.split(",",3); // 这有写长度是3
String[] idArr = ids.split(",",2); // 这有写长度是2

// ok看到这里大家应该明白了,所以java的split默认是根据指定的字符去截取,然后末尾如果都是空字符串,那么全部舍去,除非你限定长度。
// 而javascript确实默认没有去处理空字符串的问题。

2.使用字符作为分隔符

"2|33|4".split("|")

出来的结果是:

""

2

|

3

3

|

4

奇怪吧,不过注意看一下API说明还是知道原因的.

所以正常的写法是这样的:

①、如果用“.”作为分隔的话,必须是如下写法:String.split("\\."),这样才能正确的分隔开,不能用String.split(".");
②、如果用“|”作为分隔的话,必须是如下写法:String.split("\\|"),这样才能正确的分隔开,不能用String.split("|");
“.”和“|”都是转义字符,必须得加"\\";
③、如果在一个字符串中有多个分隔符,可以用“|”作为连字符,比如:“a=1 and b =2 or c=3”,把三个都分隔出来,可以用String.split("and|or");
  • 11
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浮生(FS)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值