[英]Check if String contains substring in clojure
我需要在我的測試中檢查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
有沒有辦法將java字符串轉換為集合? 或者我可以通過其他方式檢查子串出現?
最簡單的方法是使用java.lang.String
的contains
方法:
(.contains "The Band Named Isis" "Isis")
=>是的
您也可以使用正則表達式來完成,例如
(re-find #"Isis" "The Band Named Isis")
>“Isis”
(re-find #"Osiris" "The Band Named Isis")
=>無
如果您需要結果為true或false,則可以將其包裝在boolean
:
(boolean (re-find #"Osiris" "The Band Named Isis"))
=>假
Clojure 1.8已經推出了包括? 功能。
(use '[clojure.string :as s])
(s/includes? "abc" "ab") ; true
(s/includes? "abc" "cd") ; false
字符串是可選的:
(seq "Hello") ;;=> (\H \e \l \l \o)
...所以你可以使用序列庫來找到匹配:
(defn subsumes [main sub]
(some
(partial = (seq sub))
(partition (count sub) 1 main)))
(subsumes "Hello" "ll") ;;=>> true
......但是像Diego Basch建議的那樣,它更簡單,更快捷。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.