黑马程序员技术交流社区

标题: split()方法疑问 [打印本页]

作者: 廖成    时间: 2013-1-26 20:42
标题: split()方法疑问
本帖最后由 张向辉 于 2013-1-27 13:40 编辑

在这段代码中:
  1.     public class Split {  
  2.       
  3.         public static void main(String[] args) {  
  4.             String str1 = "a-b";         
  5.             String str2 = "a-b-";  
  6.             String str3 = "-a-b";  
  7.             String str4 = "-a-b-";  
  8.             String str5 = "a";  
  9.             String str6 = "-";  
  10.             String str7 = "--";  
  11.             String str8 = "";   //等同于new String()  
  12.               
  13.             getSplitLen(str1);  
  14.             getSplitLen(str2);  
  15.             getSplitLen(str3);  
  16.             getSplitLen(str4);  
  17.             getSplitLen(str5);  
  18.             getSplitLen(str6);  
  19.             getSplitLen(str7);  
  20.             getSplitLen(str8);  
  21.         }  
  22.          
  23.         public static void getSplitLen(String demo){  
  24.             String[] array = demo.split("-");  
  25.             int len = array.length;  
  26.             System.out.print("\"" + demo + "\"长度为:" + len);  
  27.             if(len >= 0){  
  28.                 for(int i=0; i<len; i++){  
  29.                     System.out.print(" \""+array[i]+"\"");  
  30.                 }            
  31.             }  
  32.             System.out.println();  
  33.         }  
  34.       
  35.     }  
复制代码
为什么打印结果是:
"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