8

这是我的代码:

serialNumbers = "";

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

int arrayLength = serialArray.length;

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

4

5 回答 5

14

文档

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

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

于 2013-07-15T13:30:36.840 回答
6

拆分总是返回至少一个元素。

在没有找到分隔符的情况下,整个输入以单元素数组的形式返回。

于 2013-07-15T13:30:50.220 回答
1

serialArraycontains [""],即 1 个元素

于 2013-07-15T13:32:52.923 回答
0

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

        // If no match was found, return this
        if (off == 0)
            return new String[]{this};
于 2013-07-15T13:35:18.537 回答
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;
    }
}

}

于 2013-07-15T14:19:17.587 回答