2014-10-22 84 views
2

我有一個長clojure字符串,我需要用空格分隔每2個字符(例如:「1234567890」 - >「12 34 56 78 90」。 解決方案我用的是:Clojure:每x個字符在空格中插入空格

(->> 
    (partition 2 2 "" s) 
    (map (partial join "")) 
    (join " ")) 

有沒有什麼簡單的方法來做到這一點

回答

0

你可以用正則表達式做,但就是這個簡單,我 - 是的,但它看起來像一個品味問題?。

user> (clojure.string/replace "1234567890" #"(.{2})(?!$)" "$1 ") 
"12 34 56 78 90" 
+0

它確實很整潔,但如果我打算使用它,我會留下相當多的評論來幫助未來的開發者(和我自己)! :) – Chiron 2014-10-22 12:24:49

+0

@Chiron,當然正則表達式總是有點寫只是代碼,但這個小而簡單。 – coredump 2014-10-22 12:29:27

0

Anoth呃可能的變種:

user=> (->> "1234567890" (partition 2) (map #(apply str %)) 
      (clojure.string/join " ")) 
"12 34 56 78 90" 
+0

@Chiron定義'簡單'。對於一個它可能會使用異步,有人會使用Java互操作,換能器或Web服務。我爲我發佈了「更簡單」的解決方案。作者將決定它是否更簡單。 – edbond 2014-10-22 14:39:07

+3

該人寫了一個正則表達式並將其稱爲*簡單*解決方案。這是主觀的。 – edbond 2014-10-22 14:58:58

+0

當然這是主觀的,但正則表達式是做文本轉換的標準工具。在這裏,我們有刺 - >序列seqs - > seq字符串 - >新字符串。而且我們也使用2個宏來做這麼簡單的事情。我不知道,一定是真正有意義的簡單定義。 – coredump 2014-10-22 17:12:28