字符串拆分的Java拼图

时间:2017-01-21 11:00:49

标签: java

有人可以检查下面的代码并解释第二种情况吗?

public class SplitMain {

    public static void main(String[] args) {
        String[] arr = {"", "/", "as/d"};
        for (String s : arr){
            System.out.println(" Output : " + printStrArr(s.split("/")));   
        }
    }

    public static String printStrArr(String[] ar){
        String out = "";
        System.out.println("Length = " + ar.length);
        for (String s1 : ar){
            out += (s1 + "--");
        }       
        return out;
    }
}

结果::

  

长度= 1输出: -

     

长度= 0输出:

     

长度= 2输出:as - d -

当输入只是“”时,输出长度为1,这是有意义的;第三种情况是正常情况;但第二种情况,当输入为“/”时,结果数组的长度为0.为什么会这样?

1 个答案:

答案 0 :(得分:0)

这是因为String.split()的工作方式 - 它基本上删除了它分割的分隔符

javadoc甚至包含这个例子:

The string "boo:and:foo", for example, yields the following results
with these expressions: 

Regex      Result

:  { "boo", "and", "foo" }} 
o  { "b", "", ":and:f" }}

所以"/".split("/")返回一个空数组。