我需要在我的测试中检查java String是否包含子字符串.
这不起作用,因为java字符串不是集合:
(deftest test_8
(testing "get page from sputnik"
(let [
band "Isis"
page (get-sputnikpage-for-artist band)
]
(is (contains? band "Isis")))));does NOT work
Run Code Online (Sandbox Code Playgroud)
有没有办法将java字符串转换为集合?或者我可以通过其他方式检查子串出现?
Die*_*sch 72
最简单的方法是使用以下contains方法java.lang.String:
(.contains "The Band Named Isis" "Isis")
=>是的
您也可以使用正则表达式来完成,例如
(re-find #"Isis" "The Band Named Isis")
Run Code Online (Sandbox Code Playgroud)
>"Isis"
(re-find #"Osiris" "The Band Named Isis")
Run Code Online (Sandbox Code Playgroud)
=>无
如果您需要结果为true或false,可以将其包装在boolean:
(boolean (re-find #"Osiris" "The Band Named Isis"))
=>假
San*_*Lee 45
Clojure 1.8已经推出了包括?功能.
(use '[clojure.string :as s])
(s/includes? "abc" "ab") ; true
(s/includes? "abc" "cd") ; false
Run Code Online (Sandbox Code Playgroud)
字符串是可选的:
(seq "Hello") ;;=> (\H \e \l \l \o)
Run Code Online (Sandbox Code Playgroud)
...所以你可以使用序列库来找到匹配:
(defn subsumes [main sub]
(some
(partial = (seq sub))
(partition (count sub) 1 main)))
(subsumes "Hello" "ll") ;;=>> true
Run Code Online (Sandbox Code Playgroud)
......但是像Diego Basch建议的那样,它更简单,更快捷.
| 归档时间: |
|
| 查看次数: |
23940 次 |
| 最近记录: |