首页
学习
活动
专区
工具
TVP
发布

Java String.split用法和误区

Java中有很多方法,都有一些自己的小窍门和使用误区,今天小编在写程序的时候,就遇到了一个小问题,当使用split分隔一个字符串的时候,总是得不到自己想要的结果,于是小编翻阅API,最终将问题得以解决,不过没费多长时间,小编也特意深入了解了一下split的内部机制,下面就把解决这个问题的心得以及使用时一些相关的误区总结一下,分享给各位技术君,希望在以后的工作中,能让你们少走些弯路。

众所周知,在java.lang包中有String.split()方法,其结果返回是一个数组,相信很多小伙伴在开发过程中会经常用到。

1

简单用法

需要分隔一个字符串时,直接调用split()方法即可。

返回结果如下:

2

特殊字符的分隔

特殊情况有 * ^ : | . \,当我们使用这些特殊字符的时候,如果没有注意,就有可能会得到一些偏离我们预期的结果,当然,对有经验的大牛来说,这些都是毛毛雨了。

例如:String str="hello*world";

单符号作为分隔符

多个符号作为分隔符

总结:

(1)split表达式,其实就是一个正则表达式。* ^ | 等符号在正则表达式中属于一种有特殊含义的字符,如果使用此种字符作为分隔符,必须使用转义符即\\加以转义。

(2)如果使用多个分隔符则需要借助 | 符号,需要转义符的仍然要加上分隔符进行处理。

3

字符串末尾丢失空字符串

字符串末尾分隔符不能识别

例如:

通过这种方式,得到的数组元素个数只是两个,最后一个","后没有内容,它没有作为空字符串成为第三个数组元素,结尾的空字符串被丢弃了!这个函数还有另一种重载方式 :public String [] split (String regex, int limit) ,API中是这么解释的:

limit 参数控制模式应用的次数,因此影响所得数组的长度。

如果该限制 n 大于 0,则模式将被最多应用 于n - 1 次,数组的长度将不会大于 n ,而且数组的最后一项将包含所有超出最后匹配的定界符的输入。

如果 n 为非正,那么模式将被应用尽可能多的次数,而且数组可以是任何长度。

如果 n 为 0,那么模式将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃。

而对于函数 public String [] split (String regex)该方法的作用就是使用给定的表达式和限制参数 0 来调用两参数 split方法。因此,所得数组中不包括结尾空字符串。

所以如果不想让结尾的空字符串被丢弃,那么应该这样写:

通过以上的这些分析和讲解,相信你已经get到今天的方法了吧,内容看似简单,却有时候往往容易被我们忽略,希望今天的分享能给各位小伙伴们带来帮助,也欢迎各位小伙伴前来留言交流。

大侠看完了,如果您觉得有用,就烦请动动手指关注一下吧,

小编将会每天为你推送有关项目管理、技术干货的新知识哟!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180606G084XR00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券