我有一个如下所示的数组:
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的新手
答案 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]