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

时间:2013-09-26 04:44:29

标签: java string split

我有以下内容:

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+

8 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分: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)));
        }
    }
}

输出:

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

答案 2 :(得分:4)

使用\\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+,它也会检测空格和制表符。

答案 3 :(得分:1)

用它来分割字符串。

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

答案 4 :(得分:1)

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

答案 5 :(得分:1)

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);
      }
   }
}

答案 6 :(得分:0)

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

而不是

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

答案 7 :(得分:0)

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

这样的事情应该有效。

for(int x=0; x<stringArray.length(); x++){
    stringArray[x] = stringArray[x].trim();
}