我知道这个问题被多次询问过,但我不知道为什么我的工作不起作用。 我有一个像这样的字符串:
String line = "_9________+_10__" // ("_" is a white space)
我做了
String[] token = line.split("\\s+");
当我在令牌中打印元素时,输出是这样的:
_ //(spaces here)
9
+
10
我无法弄清楚为什么那里还有空间......有人可以帮我这个吗?
答案 0 :(得分:0)
@Andreas感谢您的帮助。这个问题现在已经解决了。
我将引用安德烈斯的评论: 您最近更新的问题在开头有空格。 split()将默认消除任何尾随空值,但不会消除嵌入或前导空值。你的问题是错误的:令牌数组中的第一个值是空的,而不是空格列表。这是设计和记录的。你应该阅读javadoc:docs.oracle.com/javase/7/docs/api/java/lang/...它说“因此尾随空字符串不包括在结果数组中。”
解决此问题的两种方法:在调用split()之前修剪字符串,或忽略数组中的空值。
答案 1 :(得分:0)
您可以做的是trim()
,然后是split()
。
Srting line = " 9 + 10 ".trim();
String[] tokens = line.split("\\s+");