字符串被空格分割

String split by spaces

我知道这个问题已经被问过很多次了,但我不知道为什么我的问题不起作用。 我有一个这样的字符串:

String line = "_9________+_10__" // ("_" is a white space)

我做到了

String[] token = line.split("\s+");

当我打印token中的元素时,输出是这样的:

_ //(spaces here)
9
+
10

我不明白为什么那里还有空格...有人可以帮我解决这个问题吗?

@Andreas 感谢您的帮助。这个问题现在已经解决了。

我将在这里引用 Andreas 的评论: 您新更新的问题开头有一个 space 。 split() 默认会消除任何尾随的空值,但不会消除嵌入的或前导的空值。你的问题是错误的:令牌数组中的第一个值是空的,而不是 space 的列表。这是设计和记录的。您应该阅读 javadoc:docs.oracle.com/javase/7/docs/api/java/lang/…。它说 "Trailing empty strings are therefore not included in the resulting array."

两种解决方法:Trim调用split()前的字符串,或者忽略数组中的空值。

你可以做的是 trim() 然后 split() 它。

Srting line = " 9    + 10 ".trim();

String[] tokens = line.split("\s+");