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]);
}
}
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文档上有
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文档上有