2016-07-28 3 views
2

Я новичок в clojure. Я узнаю о разделении строки различными способами. Я получаю помощь отсюда: https://clojuredocs.org/clojure.string/split Нет примера для разделения строки при фиксированном числе символов.Как разбить строку на фиксированные числа символов в clojure?

Позвольте строке «привет всем приветствуем здесь». Я хочу разделить эту строку после каждого полукокса, поэтому выход (после раскола) должен быть [ «ад» «о эв» «eryo» «пе ш» «ЭЛКО» «я т» " 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") 

или разделить строку, рассматривая его как SEQ:

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) вместо' (partial apply str). –

+0

возможно. Тем не менее подход 're-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) 

медленнее, чем другие примеры ты gh :).

+1

Спасибо, чувак! Это также хороший подход. –

Смежные вопросы