(def string "this is an example string. forever and always and and")
有人能帮帮我吗?我在Clojure中编码,我一直试图计算“'和'”这个词的次数。出现在字符串中。
非常感谢任何帮助
答案 0 :(得分:5)
一种方法是使用正则表达式和re-seq
function。这是一个天真的"例如:
(count (re-seq #"and" string))
以下是使用treading macro ->>
编写的相同代码:
(->> string
(re-seq #"and")
count)
它会计算"and"
中子字符串string
的所有外观。这意味着像p 和这样的单词也会计算在内。但是我们只能通过在正则表达式中添加一些限制(使用"word boundary" metacharacter \b
)来计算and
个单词:
(->> string
(re-seq #"\band\b")
count)
此版本将确保"and"
子字符串被非字母字符包围。
如果您想要不区分大小写的搜索(包含"And"
):
(->> string
(re-seq #"(?i)\band\b")
count)
替代解决方案是使用split
function from clojure.string
namespace:
(require '[clojure.string :as s])
(->> (s/split string #"\W+") ; split string on non-letter characters
(map s/lower-case) ; for case-insensitive search
(filter (partial = "and"))
count)