java中包含大量空格的字符串的string.trim()-其长度返回为1,而不是0

java中包含大量空格的字符串的string.trim()-其长度返回为1,而不是0,java,trim,Java,Trim,以下代码未按预期工作: public int countSegments(String s) { System.out.println(Arrays.toString(s.trim().split(" "))); return (s.trim().split(" ")).length; } 如果s=”,则理想情况下应返回0。但即使打印的数组为空,它也返回1。谁能解释一下1是怎样的结果?请注意,此处的s包含多个空格,而不仅仅是一个空格。St

以下代码未按预期工作:

public int countSegments(String s) {
    System.out.println(Arrays.toString(s.trim().split(" ")));
    return (s.trim().split(" ")).length;
}
如果s=”,则理想情况下应返回0。但即使打印的数组为空,它也返回1。谁能解释一下1是怎样的结果?请注意,此处的s包含多个空格,而不仅仅是一个空格。StackOverflow不允许输入多个空格。

String的
split()
如果未找到匹配项,则返回
新字符串[]{this}

在您的例子中,
s.trim()
返回
s.trim().split(“”
返回
新字符串[]{}
newstring[]{”“}
是一个长度为1的数组。如果执行表达式
System.out.println(s.trim().split(“”[0]。equals(“”)
,您将得到
true

”。split(“”
将返回一个包含
的单元素数组。你的期望是不对的,我想这是意料之中的。Javadoc说“如果表达式与输入的任何部分都不匹配,那么结果数组只有一个元素,即这个字符串。”。由于使用的是trim,因此表达式将不匹配。