【问题标题】:Split a string at a single space在单个空格处拆分字符串
【发布时间】:2013-01-01 10:10:33
【问题描述】:

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

例如:

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

变成

"This"

"sentence"

"gets"

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

"split."

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

编辑:

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

【问题讨论】:

  • 你需要的输出不是你在单个空间上分割得到的。 single space 不会是数组中的不同元素。所以,基本上,你的双倍空格会导致一个空字符串,而不是数组中的一个空格。
  • @Fishstick 您希望如何拆分数据,例如:A_B__C___D____E
  • @Pshemo 第一个之后的任何其他空格都将被拆分。我将编辑问题以反映这一点。

标签: java regex string split character


【解决方案1】:

没那么难:

str.split(" ");

【讨论】:

    【解决方案2】:

    我认为这可能是您正在寻找的(您可以使用 \\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."
    

    解释:

    • "(?&lt;! ) " 只会在前面没有空格的空格上拆分
    • "(?&lt;= {2})" 将在前面有两个空格的地方拆分。

    【讨论】:

    • +1 干得好。我正要用同样的方法编辑我的答案,但没有及时得到第二个正则表达式:)
    • 谢谢,已接受答案。虽然删除额外的空格会很好,但学习这些东西很好。我会把它包括在内。
    • @Fishstick 很高兴你喜欢它。
    【解决方案3】:

    试试StringTokenizer

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

    更新:

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

    【讨论】:

      【解决方案4】:

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

      例子:

      private static final Splitter splitter = 
            Splitter.on(',').trimResults().omitEmptyStrings();
      
      //results in {"some", "string"}
      splitter.split("some string");
      

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

      :)

      【讨论】:

        猜你喜欢
        • 2012-01-08
        • 2013-04-19
        • 1970-01-01
        • 2010-12-13
        • 1970-01-01
        • 1970-01-01
        • 2012-05-10
        • 1970-01-01
        相关资源
        最近更新 更多