String类中split()方法的使用

String类中split()方法的使用

      今天在在使用split方法时,发现split()方法很怪异的现象,查询了官方文档和各种资料,总结如下

      官方文档是这么介绍的:

     大致意思就是 在给定的正则表达式来分割该字符串.此方法返回的数组包含此字符串的子字符串,每个子字符串都由另一个匹配给定表达式的子字符串终止,或者由此字符串末尾终止。数组中的子字符串按它们在此字符串中出现的顺序排列。如果表达式不匹配输入的任何部分,那么所得数组只具有一个元素,即此字符串。.哒哒一大堆,看着拗口又难懂.

     咱们简单来说就是通过使用split()方法,给定一个正则,会根据该正则来将字符串切割,并且返回String类型的数组,这个大家应该都知道,但是在他的重载方法split(String regex,int limit) 中,第二个参数是有点门道的,

     第一个regex是正则,我们都清楚,需要注意如果是要按照"|" "."之类的特殊符号分割,需要加上转义,比如"//|",不然切割的会不准确

     第二个参数int limit 是要输入一个数值,这个数值n如果 >0 则会执行切割 n-1次,也就是说执行的次数不会超过输入的数值次.数组长度不会大于切割次数,比如下面代码:

输入limit为数字1,切割执行1-1次 ,也就是0次,所以切割后的数组长度仍然是1,也就是原来的字符串

   第二个规则: 如果输入的limit数值是非正数,则执行切割到无限次,数组长度也可以是任何数值,比如下面代码:

 输出结果如下:

也就是说如果limit为非正数,那么会将字符串所有匹配该正则的全部切割,但是我们也发现没有内容的","变成了空字符串,数组的有效大小并不需要这些空字符串

第三个规则  : 如果输入limit数值等于0,则会执行切割无限次并且去掉该数组最后的所有空字符串

我们可以看到,数组 最后的空字符串被去掉了,但是前方和中间的仍然存在.以后使用split()会不会更加得心应手了呢?

猜你喜欢

转载自blog.csdn.net/qq_41785135/article/details/82840626