2014-10-22 96 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

相关问题