如何在Ruby中从包含数字+字符的字符串中提取数字到数组中?

lymnna71  于 12个月前  发布在  Ruby
关注(0)|答案(1)|浏览(148)

我有一个包含整数和字符的字符串,我需要提取数组中的所有数字,例如:

str = "achance123for84faramir3toshowhis98quality"
#=> [123, 84, 3, 98] #Desired output

我很难把它们组合在一起。我试过:

str.split('').select {|el| el.match(/[\d]+.*/)}
#=> ["1", "2", "3", "8", "4", "3", "9", "8"]

str.split('').select {|el| el.match(/[\d]+[\D]+/)}
#=> []

我如何维护所有整数的分组并将它们列在数组中?假设它只包含**数字和字符(a-z)。没有空格/非单词字符。所有的都是小写的。

  • (它们不必转换为整数。我只是在使用正则表达式将它们分组时遇到了问题。如果有一个没有Regex的解决方案,那也会很棒!)*
2admgd59

2admgd591#

尝试使用String#scan,如下所示:

str.scan(/\d+/)
#=> ["123", "84", "3", "98"]

如果你想要整数而不是字符串,只需添加map即可:

str.scan(/\d+/).map(&:to_i)
#=> [123, 84, 3, 98]

相关问题