0

The string count() methodから、メソッド「count」がどのように機能するかを理解しています。

しかし、配列で(文字ではなく)単語をカウントする方法がわかりません:

def find_frequency(sentence, word)
  sentence.downcase.split.count(word.downcase)
end

find_frequency("to be or not to be", "to") # => 2
  # same as ["to", "be", "or", "not", "to", "be"].count("to")
"hello world".count("lo") # => 5

5 を返す場合、 7 (t、o、o、o、t、t、o) を返さ"hello world".count("lo")ないのはなぜですか?find_frequency("to be or not to be", "to")

4

1 に答える 1

2

ドキュメントによるとcount(p1)Array

要素数を返します。引数が与えられた場合、obj に等しい要素の数をカウントします。ブロックが与えられた場合、true 値を生成する要素の数をカウントします。

あなたの場合、sentence.downcase.splitを与えます["to", "be", "or", "not", "to", "be"]。ここでは、 に等しい 2 つの配列要素"to"があるため、 が得られ2ます。

ドキュメントからStringcount(*args)

各 other_str パラメータは、カウントする文字のセットを定義します。これらのセットの共通部分は、str でカウントする文字を定義します。キャレット (^) で始まる other_str はすべて否定されます。シーケンス c1–c2 は、c1 と c2 の間のすべての文字を意味します。

否定のケースを脇に置くと、Stringパラメータpcountを指定すると、 x を呼び出すと、String p文字の 1 つに一致するxの文字数が返されます。

あなたの場合、あなたは"llool"一致し"hello world"ています"lo"、つまり5

于 2013-05-01T07:24:13.920 に答える