作为一个 Clojure 新手,我被这个小问题困扰着:
我想遍历序列并执行 split
,然后对序列元素执行 str
(串联)函数。
这是我的顺序:
(("2.660.784") ("2.944.552") ("44.858.797"))
我想要得到的是这样的:
("2660784" "2944552" "44858797")
这是我为我的问题创建递归解决方案的尝试:
(defn old
[squence]
(let [size (count squence)]
(loop [counter 1]
(if (<= counter size)
(apply str (clojure.string/split
(first (first squence))
#"\b\.\b"
))
(old (rest squence)))
)))
当然,这不是解决方案,因为它仅将 split
和 str
应用于一个元素,但我想对 中的每个元素重复此操作>序列
。 序列
是我项目中其他一些函数的产物。
我肯定遗漏了一些东西,所以请帮我解决这个问题......
最佳答案
最简单的写法是用replace
,而不是split
/str
。一旦您编写了可以对单个字符串执行此转换的函数,您就可以使用 map
或 for
对字符串序列执行此操作。在这里我不得不稍微解构一下,因为无论出于何种原因,序列中的每个元素本身都是另一个序列;我刚刚取出了第一个元素。
(for [[s] '(("2.660.784") ("2.944.552") ("44.858.797"))]
(clojure.string/replace s #"\b\.\b" ""))
关于recursion - Clojure 递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7787741/