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,因此表达式将不匹配。