今天在写一个Java字符串切分程序时,发现切分后的计数一直有问题,调了半天才找到原因。。。
下面先来看一个问题:有字符串str=“string split test” ,使用String类的split方法,根据空格切分后的字符串数组有多少个元素?我们可以用下面的程序来测试:
String str = "string split test";
String[] result = str.split(" ");
System.out.println("Result size: " + result.length);
for (String s : result)
System.out.println(s);
程序输出为:
Result size: 3
string
split
test
嗯,和我们想的一样,原来的字符串被空格切分成了3个新的字符串。
再来看一个问题:有字符串str=“” (空字符串),使用String类的split方法,根据空格切分后的字符串数组有多少个元素?
还是用程序来测试:
str = "";
result = str.split(" "); (或者用, 进行切分)
System.out.println("Result size: " + result.length);
for (String s : result)
System.out.println(s);
程序输出为:
Result size: 1
这里居然是1,而不是我之前认为的0,里面的元素是与原字符串相同的空字符串。
仔细想想,其实是有道理的。无论原字符串的内容是什么,通过split切分后,如果原字符串中没有出现切分定界符,那么切分结果就返回以原字符串为原始的字符串数组;如果原字符串中有切分定界符,则从定界符处将原字符串断开,将生成的新字符串按顺序以数组的形式返回。