Ruby Tips!

RubyのTipsを紹介します

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

String#countは特定の文字の出現回数をカウントして返すメソッドだ。Ruby 1.9はマルチバイト文字にも対応しているが、Ruby 1.8ではマルチバイト文字に対応していない事に注意。

p "foo bar buz".count('b') #=> 2
p "ほげほげぴよぴよ".count('') #=> 2

Ruby 1.8でもマルチバイト文字の出現回数をカウントしたい場合はString#scanを使うと良い。String#scanは引数で繰り返しマッチを行いマッチした部分文字列の配列を返すメソッドだ。マッチした部分が配列で得られるので、配列の要素数Array#lengthで取得して文字数を得る。

p "foo bar buz".scan('b').length #=> 2
p "ほげほげぴよぴよ".scan('').length #=> 2

String#scanを応用すると、すべての文字の出現回数を簡単にカウントすることができる。これについては文字の出現回数をカウントする - Ruby Tips!を参照。