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

Ruby on rails 在Ruby中扫描数组以查找字符串匹配项,ruby-on-rails,ruby,arrays,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新手试试这个: foo.map {|s|

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

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新手

试试这个:

foo.map {|s| s[/\d+cm/].to_i }
# => [64, 0, 0, 0, 6, 0, 0, 0, 0, 0] 
foo.join().scan(/\b(\d+cm)/).flatten.map{|x| x.to_i}
试试这个:

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

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

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

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

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


工作出色。干杯@如果你发现一个答案对你有用,你应该接受它,而不仅仅是投赞成票。@RubyRacer,也许吧,但不要急于这么做。安德鲁,在做选择之前给点时间。你不想通过快速选择来阻止其他答案,你也不想让仍在准备答案的读者短路。许多OP在做出选择前等待数小时甚至一天。但是,是的,这是一个很好的答案+1@RubyRacer,我看到了。依我看,这没什么区别。首先,在做出选择之前,给其他人时间发布他们的答案只是一种礼貌。而且,我经常看到一个精彩的答案被选中,后来却被一个杀手级的答案击败。当然,OP可以在以后更改选择,但很少这样做,尤其是新手。对不起,伙计们。不能用低于15的声望来投票,我不能在7分钟前接受它。干杯@如果你发现一个答案对你有用,你应该接受它,而不仅仅是投赞成票。@RubyRacer,也许吧,但不要急于这么做。安德鲁,在做选择之前给点时间。你不想通过快速选择来阻止其他答案,你也不想让仍在准备答案的读者短路。许多OP在做出选择前等待数小时甚至一天。但是,是的,这是一个很好的答案+1@RubyRacer,我看到了。依我看,这没什么区别。首先,在做出选择之前,给其他人时间发布他们的答案只是一种礼貌。而且,我经常看到一个精彩的答案被选中,后来却被一个杀手级的答案击败。当然,OP可以在以后更改选择,但很少这样做,尤其是新手。对不起,伙计们。声誉低于15的人不能投票,我不能在7分钟前接受它。很好。不使用正则表达式有什么好处?谢谢,我认为这不重要。正则表达式的使用,正如@Santosh所做的,是清晰易读的。一般来说,正则表达式非常有用,它提供了简洁的方法,可以在使用其他方法最多也很麻烦的情况下轻松地操作文本。另一方面,有可能创建非常复杂的正则表达式,以至于测试,尤其是维护是一个真正的挑战。我建议你在对Ruby有了更多的经验,尤其是regexes之后再考虑这个问题。不使用正则表达式有什么好处?谢谢,我认为这不重要。正则表达式的使用,正如@Santosh所做的,是清晰易读的。一般来说,正则表达式非常有用,它提供了简洁的方法,可以在使用其他方法最多也很麻烦的情况下轻松地操作文本。另一方面,有可能创建非常复杂的正则表达式,以至于测试,尤其是维护是一个真正的挑战。我建议你在对Ruby有了更多的经验,尤其是对regexes有了更多的经验之后再考虑这个问题。希望你不会因为进入Ruby而感到遗憾。一点也不会!热爱这段旅程希望你不会因为踏入红宝石而感到遗憾。一点也不!热爱旅程