特定の文字の出現回数をカウントする
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!を参照。