在单个空格处拆分字符串

时间:2013-01-17 19:13:49

标签: java regex string split character

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

例如:

This_sentence_gets__split.(下划线代表空格)

变为

"This"

"sentence"

"gets"

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

"split."

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

编辑:

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

4 个答案:

答案 0 :(得分: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})"将在其前面分成两个空格。

答案 1 :(得分:0)

并不困难:

str.split(" ");

答案 2 :(得分:0)

尝试StringTokenizer

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

<强>更新

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

答案 3 :(得分:0)

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

示例:

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

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

您可以使用trimResults(),omitEmptyStrings()和其他选项来调整它的喜好。

:)