【问题标题】:How do I split a string without keeping the delimiter?如何在不保留分隔符的情况下拆分字符串?
【发布时间】:2017-07-16 15:40:36
【问题描述】:

在 Ruby 中,如何拆分字符串而不将分隔符保留在生成的拆分数组中?我以为这是默认设置,但是当我尝试时

2.4.0 :016 >   str = "a b c"
 => "a b c"
2.4.0 :017 > str.split(/([[:space:]]|,)+/)
 => ["a", " ", "b", " ", "c"]

我看到结果中包含空格。我希望结果只是

["a", "b", "c"]

【问题讨论】:

    标签: ruby regex string split delimiter


    【解决方案1】:

    来自String#split 文档:

    如果 pattern 包含组,则相应的匹配项也会在数组中返回。

    回答您明确提出的问题:不匹配组:

    #           ⇓⇓ HERE
    str.split(/(?:[[:space:]]|,)+/)
    

    或者,即使没有组:

    str.split(/[[:space:],]+/)
    

    或者,以更Rubyish的方式:

    'a    b, c,d   e'.split(/[\p{Space},]+/)
    #⇒ ["a", "b", "c", "d", "e"]
    

    【讨论】:

      【解决方案2】:

      String#splitsplits 默认在空白处,所以不要使用正则表达式:

      "a b c".split # => ["a", "b", "c"]
      

      【讨论】:

        【解决方案3】:

        请试试这个

        str.split(' ')
        

        【讨论】:

        • 你已经从根本上改变了我的输出。在这里,您仅在一个中断空间上进行拆分。我想拆分很多空格(中断和非中断或逗号)。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-21
        • 1970-01-01
        • 2018-12-23
        • 1970-01-01
        • 2013-05-10
        • 2017-05-29
        相关资源
        最近更新 更多