我想知道Clojure是否有比How to verify if a String in Java is a valid URL中描述的更好的工具来检测给定的String是否是有效的URL。
是否有人包装Apache Commons Validator?是否有一个我不知道的独立图书馆?
答案 0 :(得分:7)
如果Apache Commons Validator符合您的要求,您可以直接在Clojure中使用它。将其添加到您的依赖项:
[commons-validator "1.5.1"]
然后你可以使用这个库,就像利用Clojure's Java interop features从Java中使用它一样。
作为一个例子,这里是Esteban Cacavelos对您链接的问题的答案的直接翻译:
;;...your imports
(import (org.apache.commons.validator.routines UrlValidator))
(defn -main [& args]
;; Get an UrlValidator
(let [default-validator (UrlValidator.)]
(if (.isValid default-validator "http://www.apache.org")
(println "valid"))
(if (not (.isValid default-validator "http//www.oops.com"))
(println "INvalid")))
;; Get an UrlValidator with custom schemes
(let [custom-schemes (into-array ["sftp" "scp" "https"])
custom-validator (UrlValidator. custom-schemes)]
(if (not (.isValid custom-validator "http://www.apache.org"))
(println "valid")))
;; Get an UrlValidator that allows double slashes in the path
(let [double-slash-validator (UrlValidator. UrlValidator/ALLOW_2_SLASHES)]
(if (.isValid double-slash-validator "http://www.apache.org//projects")
(println "INvalid"))))