Sometimes we want to see if a string is part of another string. Or if the string value starts or ends with a certain string. In Clojure we can use the
includes? function from the
clojure.string namespace to check if a string is part of another string value. To see if a string starts with a certain value we can use the
starts-with? function from the
clojure.string namespace. And to check if a string ends with a given value we use
ends-with? from the same namespace.
In the next example code we use these functions and also add a
matches? function to check if a string matches with a regular expression defined in a string:
(ns mrhaki.string.includes (:require [clojure.string :as str] [clojure.test :refer [is]])) ;; String to check. (def s "Clojure is cool!") ;; Check if given value is part of the string. (is (true? (str/includes? s "cool"))) (is (false? (str/includes? s "boring"))) ;; Check string starts with given value. (is (true? (str/starts-with? s "Clojure"))) (is (false? (str/starts-with? s "Groovy"))) ;; Check string ends with given value. (is (true? (str/ends-with? s "cool!"))) ;; Helper function to see if string with regular expression ;; matches a given string value using java.lang.String#matches. (defn matches? "Return true when string `re` with regular expression matches for value `s`, false otherwise." [^CharSequence s ^CharSequence re] (. s matches re)) (is (true? (matches? s ".*is.*"))) (is (false? (matches? s "cool")))
Written with Clojure 1.10.1.