黑马程序员技术交流社区
标题:
split()方法疑问
[打印本页]
作者:
廖成
时间:
2013-1-26 20:42
标题:
split()方法疑问
本帖最后由 张向辉 于 2013-1-27 13:40 编辑
在这段代码中:
public class Split {
public static void main(String[] args) {
String str1 = "a-b";
String str2 = "a-b-";
String str3 = "-a-b";
String str4 = "-a-b-";
String str5 = "a";
String str6 = "-";
String str7 = "--";
String str8 = ""; //等同于new String()
getSplitLen(str1);
getSplitLen(str2);
getSplitLen(str3);
getSplitLen(str4);
getSplitLen(str5);
getSplitLen(str6);
getSplitLen(str7);
getSplitLen(str8);
}
public static void getSplitLen(String demo){
String[] array = demo.split("-");
int len = array.length;
System.out.print("\"" + demo + "\"长度为:" + len);
if(len >= 0){
for(int i=0; i<len; i++){
System.out.print(" \""+array[i]+"\"");
}
}
System.out.println();
}
}
复制代码
为什么打印结果是:
"a-b"长度为:2 "a" "b"
"a-b-"长度为:2 "a" "b"
"-a-b"长度为:3 "" "a" "b"
"-a-b-"长度为:3 "" "a" "b"
"a"长度为:1 "a"
"-"长度为:0
"--"长度为:0
""长度为:1 ""
谢谢。
作者:
周志强
时间:
2013-1-26 20:59
split 方法:该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,所得数组中不包括结尾空字符串。
"a-b"长度为:2 "a" "b"//去掉-只有a,b=2
"a-b-"长度为:2 "a" "b"//去掉-只有a,b=2,末尾不算
"-a-b"长度为:3 "" "a" "b"//去掉-只有a,b和开头的空串""3个
"-a-b-"长度为:3 "" "a" "b"//去掉-只有a,b和开头的空串""3个
"a"长度为:1 "a"//没有-只有a1个
"-"长度为:0//本来-只有-去掉就没有了0
"--"长度为:0//本来-只有-去掉就没有了0
""长度为:1 ""//本来没有-只有空串""长度0
希望帮到你
作者:
黑马张英涛
时间:
2013-1-26 21:03
当字符串的第一个字符匹配正则表达式时,开头会产生一个空串,
最后一个字符匹配时,也会产生一个空串。不过,该方法规定,
最后的空串会被舍弃。所以“-”是0,“--”也是0(空串全被扔了)
而""因为不匹配,所以还是原来的空串,所以为1。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2