我有以下内容:
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+
用番石榴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+
您可以使用正则表达式拆分
string.split("\\s+");
用于\\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+
,它也会同时检测空格和制表符。
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("\\s+");
您的程序是正确的,但您在1-50
. 所以它给你那个输出。删除一个空格,你就完成了。无需更改代码。但是如果有两个空格,那么你应该使用string.split("\\s+")
String[] stringArray = string.split(" +");
代替
String[] stringArray = string.split(" ");
要解决空格问题,拆分后,您可以使用.trim()
删除空格。
像这样的东西应该工作。
for(int x=0; x<stringArray.length(); x++){
stringArray[x] = stringArray[x].trim();
}