如何验证String是否是Clojure中的有效URL

时间:2016-06-22 00:09:26

标签: clojure

我想知道Clojure是否有比How to verify if a String in Java is a valid URL中描述的更好的工具来检测给定的String是否是有效的URL。

是否有人包装Apache Commons Validator?是否有一个我不知道的独立图书馆?

1 个答案:

答案 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"))))