我有一个长clojure字符串,我需要用空格分隔每2个字符(例如:“1234567890” - >“12 34 56 78 90”。 解决方案我用的是:Clojure:每x个字符在空格中插入空格
(->>
(partition 2 2 "" s)
(map (partial join ""))
(join " "))
有没有什么简单的方法来做到这一点
我有一个长clojure字符串,我需要用空格分隔每2个字符(例如:“1234567890” - >“12 34 56 78 90”。 解决方案我用的是:Clojure:每x个字符在空格中插入空格
(->>
(partition 2 2 "" s)
(map (partial join ""))
(join " "))
有没有什么简单的方法来做到这一点
你可以用正则表达式做,但就是这个简单,我 - 是的,但它看起来像一个品味问题?。
user> (clojure.string/replace "1234567890" #"(.{2})(?!$)" "$1 ")
"12 34 56 78 90"
Anoth呃可能的变种:
user=> (->> "1234567890" (partition 2) (map #(apply str %))
(clojure.string/join " "))
"12 34 56 78 90"
@Chiron定义'简单'。对于一个它可能会使用异步,有人会使用Java互操作,换能器或Web服务。我为我发布了“更简单”的解决方案。作者将决定它是否更简单。 – edbond 2014-10-22 14:39:07
该人写了一个正则表达式并将其称为*简单*解决方案。这是主观的。 – edbond 2014-10-22 14:58:58
当然这是主观的,但正则表达式是做文本转换的标准工具。在这里,我们有刺 - >序列seqs - > seq字符串 - >新字符串。而且我们也使用2个宏来做这么简单的事情。我不知道,一定是真正有意义的简单定义。 – coredump 2014-10-22 17:12:28
它确实很整洁,但如果我打算使用它,我会留下相当多的评论来帮助未来的开发者(和我自己)! :) – Chiron 2014-10-22 12:24:49
@Chiron,当然正则表达式总是有点写只是代码,但这个小而简单。 – coredump 2014-10-22 12:29:27