2017-05-21 12 views
2

私は数字の配列を持っている:選択番号

array = [234, 928234, 234932] 

私は234として最初の3桁の数字を持っているどのように多くのarrayの要素のカウントする必要があります。つまり、結果はarray[0]array[2]になるはずです。

.countの使用方法はありますか? array.count("234")を使用すると、すべての要素がカウントされます。それが機能するように私がarray.count{ }に加えることができるものはありますか?あなたが比較のようなものを作ることができる前に、各要素を文字列化する必要があると思います

答えて

2

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

も参照してください:String#start_with?

+0

ありがとうございました。私は変数を比較する数値が必要な場合はどうなりましたか?たとえば、配列の最初の数字を残りの配列と比較したい場合は、配列= [432,234532,25532,432564]とします。したがって、上記のように '234'を検索する代わりに '432'を比較する必要があります。あなたはそれを配列[0]と他のものとどう比較するのですか? –

+0

@MattC。次のようなものです: 'array.count {| number | number.to_s.start_with? array.first.to_s} ' –

1

Integer#digitsIntegerの桁数を表すIntegersArrayを返します。数字は、そう何がやりたいだろうがArray最後三つの要素を見て、[4, 3, 2]にそれらを比較され、最初の最下位場所を返されます。

array.count {|n| n.digits[-3..-1] == [4, 3, 2] } 
#=> 2 
+0

ベストアンサー。 – sawa

0

ヨルグは、あなたが渡すことができますやっていると同じようにブロックを#countにして、そのブロックで数値を文字列に変換し、単純な文字列の一致を使用します。

array = [234, 928234, 234932, 234444234, 234, 2345] 
array.count{|x| x.to_s.match(/^234/)} 
5 
関連する問題