这是我的代码:
serialNumbers = "";
String[] serialArray = serialNumbers.split(",");
int arrayLength = serialArray.length;
即使 serialArray 中没有值,arrayLength 也显示为 1。在这种情况下,我期望长度应该返回 0。
从文档:
如果表达式与输入的任何部分都不匹配,则结果数组只有一个元素,即这个字符串。
请注意,此文档来自String.split(String, int)
方法,该方法是从String.split(String)
拆分总是返回至少一个元素。
在没有找到分隔符的情况下,整个输入以单元素数组的形式返回。
serialArray
contains [""]
,即 1 个元素
如果您查看 String.class 的实现(请参阅下面的代码段)。这里off
显示匹配计数,this
是当前正在为拆分操作处理的字符串,并且您的字符串为serialNumbers = "";
. 这就是为什么它返回数组中的一项。
// If no match was found, return this if (off == 0) return new String[]{this};
公共类 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;
}
}
}