簡體   English   中英

檢查String是否包含clojure中的子字符串

[英]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.Stringcontains方法:

(.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM