java基础 — String中的split方法的原理

java基础 — String中的split方法的原理split函数的说明split函数javadocs的说明:当在这个字符串的开头有一个正宽度匹配时,在结果数组的开头包含一个空的前导子字符串

split函数的说明

split函数java docs的说明:

当在这个字符串的开头有一个正宽度匹配时,在结果数组的开头包含一个空的前导子字符串。然而,零宽度匹配在开始时永远不会产生这样一个空的前导子字符串。极限参数控制模式应用的次数,因此影响结果数组的长度。如果限制n大于零,则模式将最多应用n-1次,数组的长度将不大于n,数组的最后一个条目将包含最后匹配分隔符以外的所有输入。如果n是非正的,那么模式将被应用尽可能多次,并且数组可以有任意长度。如果n是零,那么模式将被应用尽可能多次,数组可以有任意长度,尾随空字符串将被丢弃。

split函数的工作原理大概可以分为以下的几步:

1、遍历查找到regex,把regex前面到上一次的位置中间部分添加到list。这是split函数的核心部分
2、如果没有找到,则返回自身的一维数组
3、是否添加剩余的内容到list中
4、是否去除list里面的空字符串
5、从上面的list里面返回成数组

对于split函数limit的值可能会出现以下的几种情况:

1、Limit < 0, e.g. limit = -1
2、limit = 0,不传默认是0
3、Limit > 0,e.g. limit = 3
4、limit > size,e.g. limit = 20

split函数的原理

我们通过以下的例子来分析一下split函数的原理。

public void test() { 
   
    String string = "linux---abc-linux-";
    splitStringWithLimit(string, -1);
    splitStringWithLimit(string, 0);
    splitStringWithLimit(string, 3);
    splitStringWithLimit(string, 20);
}//需要获取资料的朋友请加Q君样:290194256*

public void splitStringWithLimit(String string, int limit) { 
   
    String[] arrays = string.split("-", limit);
    String result = MessageFormat.format("arrays={0}, length={1}", Arrays.toString(arrays), arrays.length);
    System.out.println(result);
}

// arrays=[linux, , , abc, linux, ], length=6
// arrays=[linux, , , abc, linux]

今天的文章java基础 — String中的split方法的原理分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/65967.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注