String.split("","")与StringUtil.split("","")的区别

来源:互联网 发布:seo在哪里可以自学 编辑:程序博客网 时间:2024/06/05 11:05
 public static void main(String[] args) {

    String google="www.google.cn";

    String [] gs=google.split(".");

    for(int i=0; i<gs.length; i++){

       System.out.println(gs[i]);

    }

}

测试结果却什么也没输出,而且gs.length==0。后来看了下java.lang.String类中的split方法的源码。

public String[] split(String regex) {

    return split(regex, 0);

}

上面这个split方法调用了本类中的overload方法:

public String[] split(String regex, int limit) {

    return Pattern.compile(regex).split(this, limit);

}


split调用的Pattern中的split方法,java的api中介绍说参数regex是定界正则表达式(the delimiting regular expression_r_r),并不是一个简单的分割字符。 “.”在正则表达式中有特殊含义,使用时要转义:”\\.”。所以上面代码改为:

public static void main(String[] args) {

    String google="www.google.cn";

    String [] gs=google.split("\\.");

    for(int i=0; i<gs.length; i++){

       System.out.println(gs[i]);

    }

}

在java.lang包中有String.split()方法,返回是一个数组

1、如果用“.”作为分隔的话,必须是如下写法:String.split("\\."),这样才能正确的分隔开,不能用String.split(".");
2、如果用“|”作为分隔的话,必须是如下写法:String.split("\\|"),这样才能正确的分隔开,不能用String.split("|")。"|" 分隔串时虽然能够执行,但是却不是预期的目的,"\\|"转义后即可得到正确的结果。
“.”和“|”都是转义字符,必须得加"\\";
3、如果在一个字符串中有多个分隔符,可以用“|”作为连字符,比如:“acount=? and uu =? or n=?”,把三个都分隔出来,可以用String.split("and|or");

4、+ * 不是有效的模式匹配规则表达式,用"\\+" "\\*"转义后即可得到正确的结果;
5、如果想在串中使用"\"字符,则也需要转义.首先要表达"aaaa\bbbb"这个串就应该用"aaaa\\bbbb",如果要分隔就应该这样才能得到正确结果:String[] aa = "aaa\\bbb\\bccc".split("\\\\")。



String.split("正则表达式","限制");
StringUtils.split("字符串","隔断符");
jdk文档上有
0 0