kfk*_*off 0 words clojure count
(def string "this is an example string. forever and always and and")
Run Code Online (Sandbox Code Playgroud)
有人能帮助我吗?我在Clojure编码,我一直试图计算字符串中'和'这个词的出现次数.
任何帮助深表感谢
一种方法是使用正则表达式和re-seq函数.这是一个"天真"的例子:
(count (re-seq #"and" string))
Run Code Online (Sandbox Code Playgroud)
这里是相同的代码,用treading宏->>编写:
(->> string
(re-seq #"and")
count)
Run Code Online (Sandbox Code Playgroud)
它会计算"and"你的子串的所有外观string.这意味着像p 和 a 这样的单词也会计算在内.但是我们只能and通过在正则表达式中添加一些限制来计算单词(使用"单词边界"元字符\b):
(->> string
(re-seq #"\band\b")
count)
Run Code Online (Sandbox Code Playgroud)
此版本将确保"and"子字符串由非字母字符包围.
如果你想要不区分大小写的搜索(包括"And"):
(->> string
(re-seq #"(?i)\band\b")
count)
Run Code Online (Sandbox Code Playgroud)
替代解决方案是使用命名空间中的split函数clojure.string:
(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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1789 次 |
| 最近记录: |