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

5 java string split

我有以下内容:

String string = "1-50  of 500+";
String[] stringArray = string.split(" ");
Run Code Online (Sandbox Code Playgroud)

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

Element 1: 1-50
Element 2:  of 500+
Run Code Online (Sandbox Code Playgroud)

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

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

Element 1: 1-50
Element 2: of
Element 3: 500+
Run Code Online (Sandbox Code Playgroud)

Siv*_*iva 5

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

string.split("\\s+");
Run Code Online (Sandbox Code Playgroud)


Sri*_*ati 5

使用\\s+对空间分割,即使他们都多。

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

for (String str : stringArray)
{
    System.out.println(str);
}
Run Code Online (Sandbox Code Playgroud)

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

编辑:

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

  • Tab 被认为是空格,所以它属于 `\s` 类。无需为其添加特殊情况。 (3认同)

小智 5

用番石榴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<String> 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)));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

Element 1: 1-50
Element 2: of
Element 3: 500+
Run Code Online (Sandbox Code Playgroud)