我在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中实现这一目标?
答案 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]