zoukankan      html  css  js  c++  java
  • String.split()与StringUtils.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,".split(",");  

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

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

    结果是strs.length=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 =",1,,2,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
  • 相关阅读:
    【算法】八皇后问题 Python实现
    【算法】摩尔投票
    【数据结构】 二叉树
    【Manacher算法】最长子回文串
    缓存 和 数据库 数据一致性
    python网络编程
    python网络编程
    python
    算法
    Docker使用
  • 原文地址:https://www.cnblogs.com/zhouj850/p/10267319.html
Copyright © 2011-2022 走看看