字符串数组长度显示为1,即使数组在用逗号(,)调用分割后为空

时间:2013-07-15 13:28:48

标签: java arrays

这是我的代码:

serialNumbers = "";

String[] serialArray = serialNumbers.split(",");

int arrayLength = serialArray.length;

arrayLength显示1,即使serialArray中没有值。我希望在这种情况下长度应该返回0。

5 个答案:

答案 0 :(得分:14)

来自the doc

  

如果表达式与输入的任何部分都不匹配,那么   结果数组只有一个元素,即这个字符串。

请注意,此文档来自String.split(String, int)方法,该方法是从String.split(String)

调用的

答案 1 :(得分:6)

Split总是返回至少一个元素。

如果找不到分隔符,则整个输入将以单元素数组的形式返回。

答案 2 :(得分:1)

serialArray包含[""],即1个元素

答案 3 :(得分:0)

如果你看一下String.class的实现(请参阅下面的代码片段)。此处off显示匹配计数,this是当前正在处理拆分操作的字符串,您的字符串为serialNumbers = "";。这就是为什么它在数组中返回一个项目。

        // If no match was found, return this
        if (off == 0)
            return new String[]{this};

答案 4 :(得分:0)

公共类TestArgs {

public static void main(String[] args) {
    String checkString = "";

    System.out.println("" + splitString(checkString));



}

public static int splitString(String checkString) {
    if (checkString.indexOf(",") != -1 || !"".equals(checkString)) {
        System.out.println("hello " + checkString.split(",").length);
        return checkString.split(",").length;
    } else {
        return 0;
    }
}

}