我有一系列数字:
array = [234, 928234, 234932]
我需要计算array
中有多少元素的前三位为234
;即,结果应计入array[0]
和array[2]
。
有没有办法使用.count
?如果我使用array.count("234")
,它将计入所有元素。我可以添加一些内容array.count{ }
以使其有效吗?
答案 0 :(得分:2)
在进行这种比较之前,你必须对每个元素进行字符串化:
[234, 928234, 234932].count { |num| num.to_s.start_with? '234' }
另请参阅:String#start_with?
答案 1 :(得分:1)
Integer#digits
会返回Array
Integer
s代表Integer
的数字。这些数字首先返回最不重要的位置,所以您要做的是查看 last Array
的三个元素,并将它们与[4, 3, 2]
进行比较:< / p>
array.count {|n| n.digits[-3..-1] == [4, 3, 2] }
#=> 2
答案 2 :(得分:0)
就像Jorg所做的那样,你可以将一个块传递给#count,然后在该块中将数字转换为字符串,然后使用简单的字符串匹配。
array = [234, 928234, 234932, 234444234, 234, 2345]
array.count{|x| x.to_s.match(/^234/)}
5