countメソッドを使う機会があり、せっかくなので色々な使い方をCLIアプリ上で試してみました。備忘録として記します。
まだまだ勉強中なので、間違っている点などありましたら、コメントいただけると嬉しいです!
#1.要素の合計をカウント
下記では、配列の中に花の名前が入っていて、それの合計値をカウントしてます。
practice.rb
flower = ["dandelion", "hydrangea", "lily", "rose", "lavender", "sunflower", "lily"]
puts flower.count
#result => 7
#2.一致要素の数をカウント
配列編
countの引数に指定した要素と一致するものの数をカウント
practice.rb
flower = ["dandelion", "hydrangea", "lily", "rose", "lavender", "sunflower", "lily"]
puts flower.count("lily")
#result => 2
num =[1,1,2,3,4,4,4]
puts num.count(4)
#result => 3
以下のように、計算結果に一致したものもカウントできます。
practice.rb
num =[1,1,2,3,4,4,4]
puts num.count{|n| n%2 ==0}
#result => 4
文字列編
ちなみに配列ではなく、文字列要素との一致もカウントできます。
practice.rb
string = "ある道を通り過ぎた道端さん"
puts string.count("道")
#result => 2
"道端"さんだけを取り出したい場合は・・?
practice.rb
string = "ある道を通り過ぎた道端さんと道端さん"
puts string.count("道端")
#result => 5
このようにcountメソッドを使用すると、 "道"と"端"が含まれている文字を全てcountします。
なので、"道端"さんだけを取り出したいときは、scanメソッドで文字を指定し、指定した文字がいくつ含まれているかをlengthメソッドでカウントします。
※scanメソッドで終わってしまうと"道端"さんの数だけその文字で返ってきます。
practice.rb
string = "ある道を通り過ぎた道端さんと道端さん"
puts string.scan("道端")
#result =>
道端
道端
string = "ある道を通り過ぎた道端さんと道端さん"
puts string.scan("道端").length
#result => 2