字符串被空格分割
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+");
我知道这个问题已经被问过很多次了,但我不知道为什么我的问题不起作用。 我有一个这样的字符串:
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+");