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
  • 相关阅读:
    (转)sysbench部署与参数详解
    (转)MySQL自带的性能压力测试工具mysqlslap详解
    (转)mysql双机热备的实现
    (转)linux运维必会MySQL企业面试题
    (转)MySQL出现同步延迟有哪些原因?如何解决?
    (转)mysql数据库高可用高扩展性架构方案实施
    java.IO
    String类的编码和解码问题
    编码表的概述和常见编码表
    05_打字游戏
  • 原文地址:https://www.cnblogs.com/zhouj850/p/10267319.html
Copyright © 2011-2022 走看看