这是我的代码:
serialNumbers = "";
String[] serialArray = serialNumbers.split(",");
int arrayLength = serialArray.length;
arrayLength显示1,即使serialArray中没有值。我希望在这种情况下长度应该返回0。
答案 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;
}
}
}