【问题标题】:Splitting a string on space except for single space在空格上拆分字符串,除了单个空格
【发布时间】:2013-07-08 11:44:35
【问题描述】:

我正在使用以下内容在空格上拆分字符串

myString.split("\\s+");

我如何为单个空格提供例外。即除单个空格外按空格分割

【问题讨论】:

    标签: java regex string split


    【解决方案1】:

    像这样:

    myString.split("\\s{2,}");
    

    或者像这样,

    myString.split(" \\s+"); // notice the blank at the beginning.
    

    这取决于你真正想要什么,通过阅读问题并不清楚。

    您可以检查Pattern 类中的量词语法。

    【讨论】:

    • @dystroy 这怎么相反?
    • 这不也不会拆分为单个tab吗?
    • @JoachimIsaksson 这不是 OP 问题的一部分!对吗?
    • 或正则表达式"\\s\\s+"或更简单的" +"
    • @zEro 他目前正在拆分所有空格,并且似乎只想从中排除单个空格。显然我过度阅读了这个问题,因为约翰似乎很高兴:)
    【解决方案2】:

    你可以使用类似的模式

    myString.split("\\s\\s+");
    

    仅当空白字符后跟更多空白字符时才匹配。

    请注意,空白字符不仅仅是一个简单的空格。

    【讨论】:

    • 这与myString.split("\\s{2,}"); 有何不同?
    • 结果是一样的,只是另一种写法而已。或许能更准确地表达原海报的意图。
    【解决方案3】:
    "Your String".split("\\s{2,}");
    

    会做的。

    例如:

    String str = "I am  a  String";
    String []strArr = str.split("\\s{2,}");
    

    这将返回一个长度为 3 的数组。

    以下将是输出。

    strArr[0] = "I am"
    strArr[1] = "a"
    strArr[2] = "String"
    

    我希望这能回答你的问题。

    【讨论】:

      【解决方案4】:

      如果您确实想排除单个 空格,而不是其他类型的空格,那么您需要以下内容:

      s.split("\\s{2,}|[\\s&&[^ ]]")
      

      这通过从\s 内置字符类中减去空格来构造一个字符类。

      【讨论】:

        猜你喜欢
        • 2013-01-01
        • 2015-11-26
        • 1970-01-01
        • 2014-02-15
        • 1970-01-01
        • 2017-09-03
        • 1970-01-01
        • 2017-06-18
        相关资源
        最近更新 更多