String的split方法分割出“空串”探究

split是分隔字符常用的方法,也是jdk里一个较新加入,并鼓励使用的分隔字符串方法,先查看jdk文档中的定义:

public String[] split(String regex)根据给定正则表达式的匹配拆分此字符串。

该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,所得数组中不包括结尾空字符串

例如,字符串 "boo:and:foo" 使用这些表达式可生成以下结果: Regex结果

: —— { "boo", "and", "foo" }

o —— { "b", "", ":and:f" }。

请注意红色字体部分,和使用‘o’分割后的结果:

前面的两个'o'导致分割出了空串,最后两个‘o’并没有分割出空串,而是直接省掉了。

我自己写了一个简单的程序来验证:

String[] resultStrings="8second8".split("8");
System.out.println(
"result length is:"+resultStrings.length);
for (String string : resultStrings) {
if (string.isEmpty())
System.out.println(
"{empty}");
else
System.out.println(string);

结果如下:

result length is:2
{empty}
second
如果按照常理,结果length应该是3,最后还有一个{empty},但是所得数组中不包括结尾空字符串,所以后面的空串被省略了。

posted @ 2011-03-10 11:26  yhchuan  Views(2163)  Comments(1Edit  收藏  举报