我不明白为什么以下输出有意义。
空字符串的字符串拆分方法返回长度为 1 的字符串数组
String[] split = "".split(",");
System.out.println(split.length);
返回长度为 1 的字符串数组
String[] split = "Java".split(",");
System.out.println(split.length);
返回长度为 1 的字符串数组
怎么区分??
从文档中:
此方法返回的数组包含此字符串的每个子字符串,这些子字符串由与给定表达式匹配的另一个子字符串终止或以字符串结尾终止。
要回答您的问题,它会执行预期的操作:返回的子字符串在输入字符串的末尾终止(因为,
找不到)。该文档还指出:
如果表达式与输入的任何部分都不匹配,则结果数组只有一个元素,即这个字符串。
请注意,这是第一个语句的结果。这不是 Java 开发人员添加的额外情况,以防无法找到搜索字符串。
这个我也打 它返回的是字符串,但不包括拆分字符。如果您不想获取任何字符串,请使用 StringTokenizer:
StringTokenizer st = new StringTokenizer(someString,',');
int numberOfSubstrings = st.countTokens();
它返回原始字符串(在本例中为空字符串),因为没有 , 进行拆分。
它返回一个,因为您正在测量拆分数组的大小,其中包含一个元素:一个空字符串。