在Ruby中扫描数组以查找字符串匹配

时间:2014-11-25 06:19:25

标签: ruby-on-rails ruby arrays

我有一个如下所示的数组:

foo = ["25\"/64cm", "0\"/0cm", "0\"/0cm", "0\"/0cm", "2\"/6cm", "0\"/0cm", "0\"/0cm", "0\"/0cm", "0\"/0cm", "0\"/0cm"]

我正在尝试扫描数组,并在/和cm之间返回一个新的值数组(整数)。我希望它会出现在:

bar = [64, 0, 0, 0, 6, 0, 0, 0, 0, 0]

对不起我是ruby的新手

4 个答案:

答案 0 :(得分:2)

foo.map {|s| s[/\d+cm/].to_i }
# => [64, 0, 0, 0, 6, 0, 0, 0, 0, 0] 

答案 1 :(得分:1)

foo.map { |s| /(\d+)cm/.match(s)[1].to_i }

答案 2 :(得分:1)

试试这个:

foo.join().scan(/\b(\d+cm)/).flatten.map{|x| x.to_i}

答案 3 :(得分:1)

应该至少有一个答案没有使用正则表达式:

foo.map { |s| s.split('/').last.to_i }
  #=> [64, 0, 0, 0, 6, 0, 0, 0, 0, 0]