Java:当单词之间有可变数量的空格时,按空格分割字符串?

我有以下内容:

String string = "1-50 of 500+"; String[] stringArray = string.split(" "); 

打印出这个数组中的所有元素给出了以下内容:

 Element 1: 1-50 Element 2:  of 500+ 

如何通过要求单词之间至少有一个空格来分割元素?

换句话说,我希望我的元素是:

 Element 1: 1-50 Element 2: of Element 3: 500+ 

使用\\s+分隔空格即使它们更多。

 String string = "1-50 of 500+"; String[] stringArray = string.split("\\s+"); for (String str : stringArray) { System.out.println(str); } 

完整示例: http : //ideone.com/CFVr6N

编辑:

如果您还想在选项卡上拆分,请将正则表达式更改为\\s+|\\t+ ,它也会检测空格和制表符。

您可以使用正则表达式进行拆分

 string.split("\\s+"); 

用番石榴Splitter

 package com.stackoverflow.so19019560; import com.google.common.base.CharMatcher; import com.google.common.base.Splitter; import com.google.common.collect.Lists; import java.util.List; public class Foo { private static final Splitter SPLITTER = Splitter.on(CharMatcher.WHITESPACE).omitEmptyStrings(); public static void main(final String[] args) { final String string = "1-50 of \t\n500+"; final List elements = Lists.newArrayList(SPLITTER.split(string)); // output for (int i = 0; i < elements.size(); i++) { System.out.println(String.format("Element %d: %s", i + 1, elements.get(i))); } } } 

输出:

 Element 1: 1-50 Element 2: of Element 3: 500+ 

用它来溢出字符串。

 String[] stringArray = string.split("\\s+"); 

你的程序是正确的,但你在1-50之后放了两个空格。 所以它给你输出。 删除一个空格,你就完成了。 无需更改代码。 但是如果有两个空格那么你应该使用string.split("\\s+")

 import java.util.*; import java.lang.*; import java.io.*; /* Name of the class has to be "Main" only if the class is public. */ class Ideone { public static void main (String[] args) throws java.lang.Exception { String string = "1-50 of 500+"; String[] stringArray = string.split("\\s+"); for (String str : stringArray) { System.out.println(str); } } } 
 String[] stringArray = string.split(" +"); 

代替

 String[] stringArray = string.split(" "); 

要解决空间问题,在拆分后,可以使用.trim()删除空白区域。

这样的事情应该有效。

 for(int x=0; x