一.java.lang.String提供的split
在字符串分隔时,我们有时需要指定忽略或者不忽略某些分隔符,例如:
String string=":ab:cd:ef::";
①末尾分隔符全部忽略
System.out.println(string.split(":").length);
输出为4
String s[]={,ab,cd,ef};
②不忽略任何一个分隔符
System.out.println(string.split(":",-1).length);
输出为6
String s[]={,ab,cd,ef,,};
String的split方法用到的参数是一个正则式,虽然强大,但是有时候容易出错。例如
如果,
String str = "aa.bb.cc.dd";
String[] strArray = str.split(".");
则strArray.length结果为:0
原因是String 的 split(String regex) 参数 String regex 是正则表达式 (regular expression) ,而不是普通字符串,而 "." 在正则表达式中有特殊含义,表示匹配所有单个字符。如果要那样拆分,我们必须给 "." 进行转义,String[] strArray = str.split(".") 修改为 String[] strArray = str.split("\\.") 即可。
二.org.apache.commons.lang.StringUtils提供的split(commons-lang.jar包)
它使用完整的字符串作为参数,而不是regex。
String string=":ab:cd:ef::";①最前面和末尾的分隔符全部忽略
System.out.println(StringUtils.split(string.length);输出为3
②不忽略任何一个分隔符
System.out.println(StringUtils.splitPreserveAllTokens(string, ":").length);输出为6
另附上一篇commons-lang.jar包中部分类方法的介绍:
http://blog.csdn.net/u012816314/article/details/50331393