動かざることバグの如し

近づきたいよ 君の理想に

Rubyで指定文字の出現回数をカウントするときは注意が必要

例えば以下の文章があったとする。

当職の弟を当職が殺したなどという当職のアイデンティティを否定する投稿が多数なされておりました。
当職の弟は厚史という名前でした。一つ違いの弟でした。喧嘩もしましたが、私にとってのかけがいのない弟でした。
弟は、地元の悪いもの達に、恐喝され、多摩川の河川敷で、集団暴行にあった翌日に親にもいえず自殺しました。
弟が16、私が17のことでした。
私の中にはいつも弟がいます。

この中から「」が何回出現しているだろうか

content = "当職の弟を当職が殺したなどという当職のアイデンティティを否定する投稿が多数なされておりました。
当職の弟は厚史という名前でした。一つ違いの弟でした。喧嘩もしましたが、私にとってのかけがいのない弟でした。
弟は、地元の悪いもの達に、恐喝され、多摩川の河川敷で、集団暴行にあった翌日に親にもいえず自殺しました。
弟が16、私が17のことでした。
私の中にはいつも弟がいます。
"

p content.count("")
=> 3

なるほど、3回なり。

複数文字列のカウントはcount()でできない

じゃあ今度は「当職」を検索したい ぱっと見て4個あるからおそらく4が返却されるはず

p content.count("当職")
=> 8

これはおかしいですを。どうやら「当」と「職」に分けてそれぞれカウントしてしまっているらしい

そんなときはscan()を使おう

p content.scan("当職").length

これで完璧ナリ!