Je dois vérifier si une chaîne Java contient une sous-chaîne dans mes tests.
Cela ne fonctionne pas car les chaînes Java ne sont pas des collections:
(deftest test_8 (testing "get page from sputnik" (let [ band "Isis" page (get-sputnikpage-for-artist band) ] (is (contains? band "Isis")))));does NOT work
Est-il possible de convertir des chaînes java en collections? Ou puis-je vérifier les occurrences de sous-chaînes autrement?
La méthode la plus simple consiste à utiliser la méthode contains
de java.lang.Ssortingng
:
(.contains "The Band Named Isis" "Isis")
=> vrai
Vous pouvez aussi le faire avec des expressions régulières, par exemple
(re-find #"Isis" "The Band Named Isis")
=> “Isis”
(re-find #"Osiris" "The Band Named Isis")
=> nul
Si vous avez besoin que votre résultat soit vrai ou faux, vous pouvez l’emballer dans un boolean
:
(boolean (re-find #"Osiris" "The Band Named Isis"))
=> faux
Clojure 1.8 a introduit comprend fonction.
(use '[clojure.ssortingng :as s]) (s/includes? "abc" "ab") ; true (s/includes? "abc" "cd") ; false