はじめに
こんな文字列があるぞ!この中にrubyって何個あるんだ?
s = 'rubyruborubyrubkrubarubyrubi'
こんなのcountで一発だな!
countを使ってみる
s = 'rubyruborubyrubkkrubaarubyruba'
p s.count('r')
# => 7
なるほど。rは7個あるらしい。
s = 'rubyruborubyrubkkrubaarubyruba'
p s.count('ruby')
# => 24
絶対24個もないでしょ!!!
countだと複数文字をカウントできない
上記の例だと、r,u,b,y
のどれかにマッチする文字の個数をカウントしてしまっている。
つまりcountで複数文字を数えることはできないのだ。
scanを使おう
一致する文字列を抽出して配列にする
というscanというメソッドを使おう。
s = 'rubyruborubyrubkkrubaarubyruba'
p s.scan('ruby')
# => ["ruby", "ruby", "ruby"]
p s.scan('ruby').length
# => 3
複数文字のカウントができた〜!