Rubyで文字列内の文字の#回の出現を見つける


103

文字列内の文字の出現回数を見つけるのに役立つRubyメソッド(1.9 ...)を探しています。最初のものだけでなく、すべての出現を探しています。

例:「メラニーは初心者です」文字「a」は2回出現します。これを見つけるために使用できるRubyメソッドは何ですか?

私が使用してきたRuby-doc.orgを参考にし、scan中の方法は、String: class私の目を引きました。言葉遣いがわかりにくいので、の概念がよくわかりませんscan

編集:私はこれを使ってこれを解決することができましたscanはそれをどのように達成したかをビデオで共有しました


2
オカレンスの数、または文字列内のオカレンスのインデックス値が必要ですか?いくつ知っておくと便利なことがよくありますが、通常、次の質問は「どこにあるのか」です。
ティンマン

回答:


142

aの数だけが必要な場合:

puts "Melanie is a noob".count('a')  #=> 2

詳細については、ドキュメント


18
私は本当に私はあなただけ:-)まだ1かの質問から文字列を取ったことに気づいたまで、この答えを言っています。
Hubro

なぜそれがドットで動作しないのですか?例 "voyage.localhost.com" .count( 'www。')=> 2.これはどのようになりますか?
ゲディミナス14

12
@Gediminas countは文字列ではなく文字をカウントします。「voyage.localhost.com」.count(「WWWは、」)(「W」)「voyage.localhost.com」.countと同じで、何ワットのと2つのドットが存在しないので、結果は2です
steenslag

2
ドキュメントへのリンクを追加できる可能性はありますか?
モニカの訴訟に資金

2
私は最初この答えにかなりショックを受けました、そして私はメラニーが最初に例を使用するのを見ました。いい答えだ!
AJFaraday 2017年


1

scan別の回答に示すように、文字列を渡すことでこれを解決できました。

例えば:

string = 'This is an example'
puts string.count('e')

出力:

2

また、regexの代わりにスキャンを使用して文字列を渡すことで、別の回答とは少し異なりますが、正規表現を回避するために役立ちました。

string = 'This is an example'
puts string.scan('e')

出力:

['e','e']

私はそれを理解した後に私が作成した小さなビデオガイドでこれらの方法をさらに探りました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.