Clojure字符串搜索和计数



我想知道搜索字符串并返回布尔值(或一些虚假/真实的东西)的最具Clojure风格和标准化的方法是什么。(例如,在Java中,我会使用.indexOf()并将其强制转换为布尔值。)

我想做的是搜索映射中的所有字符串,并返回1或0,这取决于字符串中是否有单词"clouds",然后找出最后的累积值-我知道我可以用regex来完成这项工作,但我想知道是否有其他选择?

实际上,在Java中,最自然的解决方案是使用contains方法。你可以在Clojure:中做同样的事情

(.contains "foobar" "bar")
;= true

在序列上映射:

(mapv #(.contains "foobar" ^String %) ["foo" "bar"])
;= [true true]

有了地图作为输入,你必须决定是想要关键点、值还是两者都想要;根据答案,您可能希望使用keysvals或只是映射条目(在这种情况下,reduce-kv将产生比map更高性能的解决方案)。

这是假设您正在搜索一个文字子字符串(与indexOf一样)。对于正则表达式,我将使用re-find并强制转换为boolean(在没有匹配的情况下,它将返回nil)。

最新更新