java中把空串分割得到的数组不是预期的

stringA.split(stringB)

stringA字符串用子串stringB分割字符串,得到一个数组。
现在发现,当stringA是长度为0的串时,得到的数组不是预期的。

String stringA = "";
String stringB=" ";
String[] tokens = stringA.split(stringB);
System.out.println("\""+stringA+"\".split(\""+stringB+"\").length="+tokens.length);
for (int i=0;i<tokens.length;i++)
	System.out.println("\""+stringA+"\".split(\""+stringB+"\")["+i+"]="+\
	tokens[i]+"(length:"+tokens[i].length()+")");

结果

"".split(" ").length=1
"".split(" ")[0]=(length:0)
String stringA = "";
String stringB="ABC";
String[] tokens = stringA.split(stringB);
System.out.println("\""+stringA+"\".split(\""+stringB+"\").length="+tokens.length);
for (int i=0;i<tokens.length;i++)
	System.out.println("\""+stringA+"\".split(\""+stringB+"\")["+i+"]="+\
	tokens[i]+"(length:"+tokens[i].length()+")");

结果输出

"".split("ABC").length=1
"".split("ABC")[0]=(length:0)
String stringA = "";
String stringB="";
String[] tokens = stringA.split(stringB);
System.out.println("\""+stringA+"\".split(\""+stringB+"\").length="+tokens.length);
for (int i=0;i<tokens.length;i++)
	System.out.println("\""+stringA+"\".split(\""+stringB+"\")["+i+"]="+\
	tokens[i]+"(length:"+tokens[i].length()+")");

结果输出

"".split("").length=1
"".split("")[0]=(length:0)

可见,""(空串)用任何串分割,都得到size为1的数组。
这不是预期的。
预期,得到空数组。
那以后用split()函数前要先判断一下stringA是否有效、是否是长度为0的串。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/coraline1991/article/details/120410987
今日推荐