我想过滤掉一个集合中的字母字符。例如,我只需要来自A
的字符B
c
d
"A(B%$c32d"
。是否只使用正则表达式?
答案 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
返回一个懒惰的字符序列。