按前n位数选择数字

时间:2017-05-21 20:11:27

标签: ruby

我有一系列数字:

array = [234, 928234, 234932]

我需要计算array中有多少元素的前三位为234;即,结果应计入array[0]array[2]

有没有办法使用.count?如果我使用array.count("234"),它将计入所有元素。我可以添加一些内容array.count{ }以使其有效吗?

3 个答案:

答案 0 :(得分:2)

在进行这种比较之前,你必须对每个元素进行字符串化:

[234, 928234, 234932].count { |num| num.to_s.start_with? '234' }

另请参阅:String#start_with?

答案 1 :(得分:1)

Integer#digits会返回Array Integers代表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