2016-07-28 49 views
2

我新來的clojure。我正在學習以各種方式分割字符串。我正在從這裏接受幫助: https://clojuredocs.org/clojure.string/split 沒有任何示例可以在固定數量的字符處拆分字符串。如何在clojure中以固定數量的字符拆分字符串?

讓一個字符串「大家好,歡迎來到這裏」。我希望每個字符後這個字符串分割,所以輸出(後分裂)[「地獄」的「o EV」「eryo」「NE W」「ELCO」「我T」「 o他「」re「]。請注意,空白區域被視爲字符。

誰能告訴我,我該怎麼辦?謝謝。

回答

7

你可以使用re-seq

user> (def s "hello everyone welcome to here") 
#'user/s 

user> (re-seq #".{1,4}" s) 
("hell" "o ev" "eryo" "ne w" "elco" "me t" "o he" "re") 

或分割字符串,將它視爲一個序列:

user> (map (partial apply str) (partition-all 4 s)) 
("hell" "o ev" "eryo" "ne w" "elco" "me t" "o he" "re") 
+0

謝謝。這很棒。它解決了我的問題。 @leetwinski –

+1

'(require'[clojure.string:as str])'並且使用['str/join'](https://clojuredocs.org/clojure.string/join)而不是'(部分應用str)'。可能是 –

+0

。仍然'重新seq'方法要快得多(好吧,如果你意識到seq) – leetwinski

2
(->> "hello everyone welcome to here" 
    (partition-all 4) 
    (map (partial apply str))) 
+0

謝謝。我得到了我的答案。 –

3

隨着傳感器:比

(def sample "hello everyone welcome to here") 

(into [] (comp (partition-all 4) (map #(apply str %))) sample) 

慢其他例子你恩:)。

+1

謝謝兄弟!這也是一個好方法。 –