从字符串中删除字母并仅保留数字

时间:2015-08-19 15:48:38

标签: arrays ruby haml

我在HAML中有一个数组arr,它在一个循环中。

- item.each do |grp, arr = []|
  - grp.section.each {|abc| arr.push(abc.values_with_units) }

对于每次迭代,它们的值和单位都会发生变化。它可能是["23 mm", "34 mm", "56 mm"],在下一次迭代中可能是["25 km/s m", "32 km/s m", "12 km/s m"]。我想摆脱单位并仅保留值:在案例1 [23,34,56]和案例2 [25, 32, 12]

我如何在Ruby中实现这一目标?

2 个答案:

答案 0 :(得分:1)

to_i忽略数字之后的所有内容,因此您可以执行以下操作。

array = ['23 mm', '34 mm', '56 mm'] 
array.map(&:to_i)
# [23, 34, 56] 

array = ['25 km/s m', '32 km/s m', '12 km/s m']
array.map(&:to_i)
# [25, 32, 12] 

答案 1 :(得分:0)

使用:

array = ["23 mm", "34 mm", "56 mm"] 
array.select {|a| a[/\d+/]}.map(&:to_i)
# > [23, 34, 56]

array = ["25 km/s m", "32 km/s m", "12 km/s m"]
array.select {|a| a[/\d+/]}.map(&:to_i)
# > [25, 32, 12]