字符串拆分方法行为

时间:2012-08-27 20:18:36

标签: java string split

我不明白为什么以下输出有意义。

空字符串上的字符串拆分方法返回长度为1的字符串数组

String[] split = "".split(",");
System.out.println(split.length);
返回长度为1的String数组

String[] split = "Java".split(",");
System.out.println(split.length);
返回长度为1的String数组

如何区分??

4 个答案:

答案 0 :(得分:10)

来自the documentation

  

此方法返回的数组包含此字符串的每个子字符串,该子字符串由与给定表达式匹配的另一个子字符串终止,或者以字符串的结尾终止。

要回答你的问题,它会做预期的事情:返回的子字符串由输入字符串的末尾终止(因为没有找到,)。文档还说明:

  

如果表达式与输入的任何部分都不匹配,那么结果数组只有一个元素,即该字符串。

请注意,这是第一个声明的结果。如果无法找到搜索字符串,Java开发人员不会添加其他情况。

答案 1 :(得分:2)

我也打了这个。它返回的是字符串,但不包括拆分字符。如果您不想获得任何字符串,请使用StringTokenizer:

StringTokenizer st = new StringTokenizer(someString,',');
int numberOfSubstrings = st.countTokens();

答案 2 :(得分:1)

它返回原始字符串(在本例中为空字符串),因为没有,要拆分。

答案 3 :(得分:0)

它返回一个因为你正在测量split数组的大小,它包含一个元素:一个空字符串。