public String[] split(String regex,int limit)字符串 "boo:and:foo" 使用这些参数可生成下列结果
Regex   Limit   结果
o         5     { "b", "", ":and:f", """" }  
o        -2     { "b", "", ":and:f", """" } 
o        0      { "b", "", ":and:f" } 请大家分析一下为什么结果红色部分是怎么split的,非常感谢

解决方案 »

  1.   

    应该是不保留,
    VB。net里可以指定保留不保留空字符串
      

  2.   

    limit 参数控制模式应用的次数,因此影响所得数组的长度。如果该限制 n 大于 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于 n,而且数组的最后一项将包含所有超出最后匹配的定界符的输入。如果 n 为非正,那么模式将被应用尽可能多的次数,而且数组可以是任何长度。如果 n 为 0,那么模式将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃。 
      

  3.   


    foo中的两个"o","o"为什么split是"",""
      

  4.   

    假设,bo${x}o:and 其中${x}是占位符代表x的值。对于任何x,下面命题的结果都为真:split("o") = ["b", x, ":and"]即,中间两个o,把字符串分成了3部分(不包括2个分隔符本身),第一部分是字符串"b",第三部分是字符串":and",而中间就是这个x的值。现在,令x等于空串"",则可以推导出:
    "boo:and".split("o") = ["b", "", ":and"]后面那个参数只代表最多分多少份。
      

  5.   

    fo${y}o${z}最后一个根据limit参数,也就是说如果最后一个字符是分隔符,如果已经分割出来的部分,满足limit条件,则不会出现最后的空串。