【问题标题】:How to break a string into two arrays in Ruby如何在Ruby中将一个字符串分成两个数组
【发布时间】:2014-11-23 12:09:12
【问题描述】:

有没有办法将String#split 删除的字符串提取到单独的数组中?

s = "This is a simple, uncomplicated sentence."
a = s.split( /,|\./ )  #=> [ "This is a simple", "uncomplicated sentence" ]
x = ... => should contain [ ",", "." ]

请注意,我需要使用的实际正则表达式比此示例复杂得多。

【问题讨论】:

  • 你的正则表达式不能那样工作(未转义的点)。
  • 您在代码注释中提到了 x,X 在哪里?
  • x 是我想要计算的——我需要某种方法从 s 中获取 a 和 x。
  • 我以为您正在寻找一种同时返回匹配分隔符 之间的子字符串的方法。
  • @Stefan 好吧,有了答案,我可以定义一个返回 a,x 的函数,然后我就完成了 - 这已经足够接近了

标签: ruby arrays split


【解决方案1】:

这样的?

a = s.scan( /,|\./ )

【讨论】:

    【解决方案2】:

    如果您想要匹配的分隔符和它们之间的子字符串,如 Stefan 的评论中那样,那么您应该使用 split 和捕获。

    "This is a simple, uncomplicated sentence."
    .split(/([,.])/)
    # => ["This is a simple", ",", " uncomplicated sentence", "."]
    

    如果你想把它们分成不同的数组,那么做:

    a, x =
    "This is a simple, uncomplicated sentence."
    .split(/([,.])/).each_slice(2).to_a.transpose
    a # => ["This is a simple", " uncomplicated sentence"]
    x # => [",", "."]
    

    a =
    "This is a simple, uncomplicated sentence."
    .split(/([,.])/)
    a.select.with_index{|_, i| i.even?}
    # => ["This is a simple", " uncomplicated sentence"]
    a.select.with_index{|_, i| i.odd?}
    # => [",", "."]
    

    【讨论】:

      【解决方案3】:

      试试这个:

      a = s.split(/,/)[1..-1]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-30
        • 2022-01-10
        • 1970-01-01
        • 1970-01-01
        • 2020-08-31
        • 2011-12-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多