过滤Clojure中的字母字符

时间:2015-08-17 14:37:02

标签: clojure

我想过滤掉一个集合中的字母字符。例如,我只需要来自A的字符B c d "A(B%$c32d"。是否只使用正则表达式?

4 个答案:

答案 0 :(得分:8)

在Clojure中:

(apply str (filter #(Character/isLetter %) "abc:sQ/SDQ_"))
;; "abcsQSDQ"

在Clojure和ClojureScript中,使用正则表达式:

 (apply str (re-seq #"[a-zA-Z]" "abc:sQ/SDQ_"))

答案 1 :(得分:4)

我能想到的最简单的实现:

(filter (fn [x] (Character/isLetter x)) "abc")

它使用Java静态函数Character.isLetter

答案 2 :(得分:2)

使用正则表达式这是另一种解决方案:

(re-seq #"[a-zA-Z]" "A(B%$c32d")

答案 3 :(得分:-1)

你没有指定多少作为输入字符串,但字符串是一个序列,所以你可以过滤掉字符:

编辑:ASCII解决方案/优化

(filter #(<= 65 (int %) 132) "abZ9%xy") ; See NielsK's comment

返回一个懒惰的字符序列。