2种StringUtils.split和String.split的比较

StringUtils.split 是对字符串进行拆分的方法。

StringUtils.split 方法有两个包下面有,分别是 org.springframework.util.StringUtilsorg.apache.commons.lang3.StringUtils

区别:

1 String str = "今天上山打老虎,打到一只小松鼠。";
2 String[] arr = StringUtils.split(str, "上山");
3  
4 ==> line_1:今天
5     line_2:打老虎,打到一只小松鼠。

第1种:

1、根据“定界符(delimiter)”将需要拆分的字符串拆分:

如上面根据“上山”拆分,将得到2个结果:“今天” 和 “打老虎,打到一只小松鼠。”。为什么说是根据“定界符”拆分的,因为它不是根据正则表达式来匹配拆分的,所以正则的[]、*等都会被当做是普通的字符。

2、只根据第一次出现的地方匹配拆分:

1 String str = "a今天上山a打老虎,打到一只小松鼠。a";
2 String[] arr = StringUtils.split(str, "a");
3  
4 ==> line_1:
5     line_2:今天上山a打老虎,打到一只小松鼠。a

如根据“a”匹配拆分,第一次出现“a”的地方刚好是第一个字符,所以左边拆分到的是空字符,并不是没有东西的,如结果的line_1处。但是第二次甚至是最后面都拆分不出来了。

第2种:

1、根据“分隔符(separatorChars)”将需要拆分的字符串拆分:

1 String str = "今天a上山b打老虎,打到a一只c小松鼠。";
2 String[] arr = StringUtils.split(str, "abc");
3  
4 ==> line_1:今天
5     line_2:上山
6     line_3:打老虎,打到
7     line_4:一只
8     line_5:小松鼠。


如上代码方式拆分,会得到5个结果,按以往的理解似乎是拆分不了的,但是却有5条。因为这个包下的此方式根据“分隔符”拆分是将“abc”按照字符分为“a”、“b”、“c”去分别拆分的,所以有5条结果。

2、会根据“分隔符”出现的地方都进行拆分,但是没有开头和结尾的结果:

1 String str = "a今天a上山a打老虎,打到a一只a小松鼠。a";
2 String[] arr = StringUtils.split(str, "a");
3  
4 ==> line_1:今天
5     line_2:上山
6     line_3:打老虎,打到
7     line_4:一只
8     line_5:小松鼠。


如上所示,不像第1种包下在最左边会有空字符的结果。此处最左边和最右边都没有结果,但是中间出现多少都可以拆分出来。因为这个分隔符是拆分成一个个字符去匹配拆分的,所以正则的内容也是没有的。

第3种:就是标题中说的String.split

1、能够根据正则(regex)进行所有匹配的拆分。

2、匹配符在最左边,那么最左边会有空字符的结果,而右边没有,这个和第1种一样。

最后做个表格展示一下不同:

转载博客:https://blog.csdn.net/weixin_39752531/article/details/118609797

原文地址:https://www.cnblogs.com/LEPENGYANG/p/15218510.html