接着上篇,继续咱们的时间和日期函数的探讨。咱们能够定义一个函数,将一个日期字符串分红一个列表。列表元素分别为年、月、日、时、分、秒。为了完成这个字符串分割操做,咱们使用“re-split‘函数。re-split函数须要一个正则表达式参数用于肯定如何分割字符串。Clojure 依赖java的正则表达式库来处理这些操做。 java
re-split函数是Clojure Contrib中字符串库的一部分,因此这就须要确保你能访问Clojure Contrib库。你能够用下面这种方式来加载字符串工具库。(注意,记得进入REPL时要加载contrib.jar,忘了点这 ) 正则表达式
=> (use 'clojure.contrib.str-utils) nil一旦加载完库,咱们就能够使用re-split了:
=>(re-split #" " "2011 06 04 17 50 21") ("2011" "06" "04" "17" "50" "21") =>(class #" ") java.util.regex.Pattern =>(re-split #":" "2011:06:04:17:50:21") ("2011" "06" "04" "17" "50" "21")咱们上面用到的正则表达式很是直白。它们以”#“开头,后面跟着包含须要匹配的正则模式。正则表达式很是复杂,不是本文重点,这里只是讲解clojure的相关用法。
让咱们随便看几个例子: 函数
=>(re-split #"\:" "2011:06:04:17:50:21") ("2011" "06" "04" "17" "50" "21")方括号里表明符合其中一个便可:
=>(re-split #"[\/\:]" "2011/06/04 17:51:00") ("2011" "06" "04 17" "51" "00")
最后咱们尝试构建本身的日期元素列表函数date-list 工具
=>(defn date-list ([](re-split #"\W+" (format-date))) ([systime](re-split #"\W+" (format-date systime)))) =>(date-list) ("2011" "06" "05" "11" "21" "21")本章没什么新内容,主要难点就在正则表达式上。不过这个和clojure没什么关系了。