加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

String.split()与StringUtils.split()

发布时间:2020-12-14 06:10:43 所属栏目:百科 来源:网络整理
导读:我们平时进行简单的字符串分割的时候,尽量不要用String自身的split方法,它是匹配正则表达式的,如果遇到$这种特殊字符,需要转义一下。用StringUtils.split()方法会更方便 使用apache StringUtils.split替代String.split 如果你对下面几个结果有疑惑的话,

我们平时进行简单的字符串分割的时候,尽量不要用String自身的split方法,它是匹配正则表达式的,如果遇到$这种特殊字符,需要转义一下。用StringUtils.split()方法会更方便

使用apache StringUtils.split替代String.split
如果你对下面几个结果有疑惑的话,建议使用apache commons包的StringUtils.split来替代。

String[] strs = "".split(",");  

结果是strs.length=1,strs[0]=""

String[] strs = ",".split(",");  

结果是strs.length=0

String[] strs = ",1,");  

结果是strs.length=2,strs[0]="",strs[1]="1"

String[] strs = StringUtils.split(",2,",strs[0]="1",strs[1]="2"

 System.out.println(":ab:cd:ef::".split(":").length);//末尾分隔符全部忽略    
  System.out.println(":ab:cd:ef::".split(":",-1).length);//不忽略任何一个分隔符    
  System.out.println(StringUtils.split(":ab:cd:ef::",":").length);//最前面的和末尾的分隔符全部都忽略,apache commons    
  System.out.println(StringUtils.splitPreserveAllTokens(":ab:cd:ef::",":").length);//不忽略任何一个分隔符 apache commons     
输出:    
4    
6    
3    
6    
String s =",3,4,";
String[] split1 = s.split(",");
String[] split2 = StringUtils.splitString(s,");

调试结果:

总结:?
String.split()会包含空字符串,而且是包含?头部的和中间的,不包含有效数字后面所有的空字符串.?
StringUtils.split()会过滤所有的空字符串. 当然空格不会被过滤.

?

String中的split(",")和split(",-1)的区别:
?
1、当字符串最后一位有值时,两者没有区别
?
2、当字符串最后一位或者N位是分隔符时,前者不会继续切分,而后者继续切分。即前者不保留null值,后者保留。
package stringsplit;
public class stringSplit {
     public static void main(String[] args) {
          String line = "hello,world,";
          String res1[] = line.split(",");
          String res2[] = line.split(",-1);
          int i=1;
          for(String r: res1)
              System.out.println(i+++r);
          System.out.println("========================");
          i=1;
          for(String r: res2)
              System.out.println(i+++r);
     }
}

输出结果是:

1hello
2
3world
========================
1hello
2
3world
4
5
6

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读