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を応用する