Trying to write a substring function in Clojure. I am sure there is a more idiomatic way. Can anyone enlighten me?
Otherwise, here is my version. Thoughts?
(defn substring?
"is 'sub' in 'str'?"
[sub str]
(if (not= (.indexOf str sub) -1)
true
false))
1 Answer 1
As you wrote in your comments, (.contains "str" "sub") is perfectly fine. it is indeed java interop - it runs the method contains on String object "str".
two more comments, first, passing str as a var name isnt so good, since str is a function, so you should consider giving it a different name. Second, in your implementation, its quite redundant to write
(defn substring? [sub st]
(if (not= (.indexOf st sub) -1)
true
false))
You could simply write
(defn substring? [sub st]
(not= (.indexOf st sub) -1))
re-find
might be the simplest way. The oldcontrib.string
used.contains
as well so it was probably the best tool for the job. \$\endgroup\$