4

我希望在每个空格处将一个字符串拆分为一个字符串数组。

例如:

This_sentence_gets__split.(下划线在这里代表空格)

变成

"This"

"sentence"

"gets"

" "(注意双倍空格留一个空格)

"split."

我想我可以做到这一点,String.split(String regex)但我对正则表达式不是很好,我不知道我将如何做到这一点。

编辑:

第一个之后的任何空格也应拆分为子字符串。例如: Split___this.变成"Split " " " " "this."

4

4 回答 4

7

我认为这可能是您正在寻找的(您可以使用\\s所有空格(如制表符、新行等)的类来改进它)

String data = "This_sentence__gets___split".replace('_', ' ');
// System.out.println(data);
String arr[] = data.split("(?<! ) |(?<= {2})");
for (String s : arr)
    System.out.println("\"" + s + "\"");

输出:

"This"
"sentence"
" "
"gets"
" "
" "
"split."

解释:

  • "(?<! ) "只会在之前没有空格的空格上拆分
  • "(?<= {2})"将在其前有两个空格的地方拆分。
于 2013-01-17T19:39:45.520 回答
1

试试StringTokenizer

 StringTokenizer st = new StringTokenizer("this is a test", " ", true);
 while (st.hasMoreTokens()) {
     System.out.println(st.nextToken());
 }

更新:

第三个参数 ( true ) 将分隔符视为单独的标记,因此它们将单独返回。

于 2013-01-17T19:43:08.713 回答
0

我对正则表达式也不是很了解,这就是我选择使用Google Guava 的 Splitter 类的原因。

例子:

private static final Splitter splitter = 
      Splitter.on(',').trimResults().omitEmptyStrings();

//results in {"some", "string"}
splitter.split("some string");

您可以使用 trimResults()、omitEmptyStrings() 和其他选项来调整它。

:)

于 2013-01-17T19:47:25.560 回答
0

没那么难:

str.split(" ");
于 2013-01-17T19:16:37.597 回答