Ruby Tips!

RubyのTipsを紹介します

文字の出現回数をカウントする

String#scanを使うと正規表現を使って文字列から文字を1文字ずつ取り出すことができる。
これにハッシュを組み合わせれば、以下のように簡単に文字列に含まれる文字の出現回数をカウントすることが可能だ。

str = "ruby is the best programming language"
table = Hash.new(0)
str.scan(/./){|m| table[m] += 1}
p table #=> {"r"=>3, "u"=>2, "b"=>2, "y"=>1, " "=>5, "i"=>2, "s"=>2, "t"=>2, "h"=>1, "e"=>3, "p"=>1, "o"=>1, "g"=>4, "a"=>3, "m"=>2, "n"=>2, "l"=>1}

コードを簡潔にするポイントはHash#newでハッシュの値に初期値を設定すること。
これによりカウントの処理で未初期化のキーの値と初期化済みのキーの値を区別する必要がなくなる。
このテクニックはハッシュで何かをカウントする時に広く利用できるので覚えておくと便利である。