有人可以检查下面的代码并解释第二种情况吗?
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.为什么会这样?
答案 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("/")
返回一个空数组。