2016-07-28 10 views
2

Ich bin neu in clojure. Ich lerne darüber, wie man Saiten auf verschiedene Arten aufteilt. Ich hole Hilfe von hier: https://clojuredocs.org/clojure.string/split Es gibt kein Beispiel, zum der Zeichenkette bei fester Zahl des Zeichens zu teilen.Wie wird die Zeichenfolge bei festen Zahlen in clojure aufgeteilt?

Lassen Sie eine Zeichenfolge "Hallo alle willkommen hier". Ich mag diese Zeichenfolge nach jedem 4. char spalten, so dass der Ausgang (nach Split) sollte [ "Hölle" "o ev" "eryo" "ne w" "Elco" "me t" sein " o er "" re "]. Beachten Sie, dass Leerraum ein Zeichen ist.

kann mir jemand sagen, wie kann ich das tun? Vielen Dank.

Antwort

7

könnten Sie re-seq verwenden:

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

oder die Zeichenfolge partitionieren, es als Seq Behandlung:

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

Danke. Es ist toll. Es löst mein Problem. @leetwinski –

+1

Es wäre sauberer zu '(erfordern '[clojure.string: as str])' und verwenden Sie ['str/join'] (https://clojuredocs.org/clojure.string/join) anstelle von' (teilweise anwenden str) '. –

+0

wahrscheinlich. Immer noch 'Re-seq' Ansatz ist viel schneller (na ja, wenn Sie die Seq realisieren) – leetwinski

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

Danke. Ich habe meine Antwort bekommen. –

3

Mit Wandlern:

(def sample "hello everyone welcome to here") 

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

Langsamer als die andere Beispiele thou gh :).

+1

Danke, Alter! Es ist auch ein guter Ansatz. –

Verwandte Themen