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

如果"hello world".count("lo")返回 5,为什么不find_frequency("to be or not to be", "to")返回 7 (t, o, o, o, t, t, o)?

4

1 回答 1

2

根据文档count(p1)对于Array

返回元素的数量。如果给定参数,则计算等于 obj 的元素数。如果给定一个块,则计算产生真值的元素数。

在你的情况下,sentence.downcase.split给你["to", "be", "or", "not", "to", "be"]. 在这里,您有两个数组元素等于"to",这就是您获得2.

从 的文档Stringcount(*args)

每个 other_str 参数定义一组要计数的字符。这些集合的交集定义了要在 str 中计数的字符。任何以插入符号 (^) 开头的 other_str 都被否定。序列 c1-c2 表示 c1 和 c2 之间的所有字符。

如果我们抛开否定的情况,给定一个String参数pcountString x的调用返回x中匹配p的字符之一的字符数。

在你的情况下,你有"llool"match "hello world""lo"5

于 2013-05-01T07:24:13.920 回答