5

我有以下内容:

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+
4

8 回答 8

7

用番石榴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+
于 2013-09-26T05:09:22.480 回答
5

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

string.split("\\s+");
于 2013-09-26T04:49:21.517 回答
5

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

于 2013-09-26T04:52:53.377 回答
2
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);
      }
   }
}
于 2015-11-06T18:24:09.090 回答
1

使用它来溢出字符串。

String[] stringArray = string.split("\\s+");
于 2013-09-26T04:50:50.400 回答
1

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

于 2013-09-26T04:51:53.230 回答
0
String[] stringArray = string.split(" +");

代替

String[] stringArray = string.split(" ");
于 2013-09-26T04:48:04.247 回答
0

要解决空格问题,拆分后,您可以使用.trim()删除空格。

像这样的东西应该工作。

for(int x=0; x<stringArray.length(); x++){
    stringArray[x] = stringArray[x].trim();
}
于 2013-09-26T05:21:56.093 回答