Clojure递归函数

Мit*_*tke 2 recursion split concatenation clojure

作为一个Clojure新手,我对这个小问题感到困扰:

我想迭代一个序列并在序列元素上执行a split,然后执行str(连接)函数.

这是我的序列:

(("2.660.784") ("2.944.552") ("44.858.797"))
Run Code Online (Sandbox Code Playgroud)

我想得到的是这样的:

("2660784" "2944552" "44858797")
Run Code Online (Sandbox Code Playgroud)

这是我为我的问题创建递归解决方案的尝试:

(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)))
          )))
Run Code Online (Sandbox Code Playgroud)

当然,这是因为它应用的是不是一个解决方案split,并str只有一个元素,但我想重复这一过程中的每个元素squence.这squence是我项目中其他一些功能的产物.

我肯定错过了一些东西所以请帮我解决这个问题......

ama*_*loy 6

编写它的最简单方法是使用replace而不是split/ str.一旦你编写了一个可以在单个字符串上进行这种转换的函数,你就可以使用map或者for对一系列字符串进行转换.在这里我不得不进行一些构造,因为无论出于何种原因,序列中的每个元素本身都是另一个序列; 我刚拿出第一个元素.

(for [[s] '(("2.660.784") ("2.944.552") ("44.858.797"))]
  (clojure.string/replace s #"\b\.\b" ""))
Run Code Online (Sandbox Code Playgroud)