接着上篇,繼續咱們的時間和日期函數的探討。咱們能夠定義一個函數,將一個日期字符串分紅一個列表。列表元素分別爲年、月、日、時、分、秒。爲了完成這個字符串分割操做,咱們使用「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沒什麼關係了。