Clojure从字符串中删除非数字

标签 clojure

我有以下代码来尝试从字符串中删除非数字:

(apply str 
    (flatten 
        (map 
            (fn[x] 
                (if (number? x) x)) 
                "ij443kj"
        )
    )
)

但它总是返回一个空字符串而不是“443”。有谁知道我在这里做错了什么以及如何获得想要的结果?

最佳答案

号码?不是这样的。它检查类型。如果您向其传递一个字符,则无论该字符是什么,每次都会返回 false。

我可能会为此使用正则表达式,但如果您想保持程序的相同想法,您可以这样做

(apply str (filter #(#{\0,\1,\2,\3,\4,\5,\6,\7,\8,\9} %) "abc123def"))

甚至更好

(apply str (filter #(Character/isDigit %) myString))

关于Clojure从字符串中删除非数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6046305/

相关文章:

Clojure.spec:如何规范对随机变化敏感的数据结构?

jquery - Clojure 相当于 jQuery Deferred?

clojure - 使用 Clojure 将 base64 编码的文件解码回原始格式

java - clojure-contrib.jar 导入错误

vim - 在 vim 中,编写 lisp/clojure 代码,如何在 let 中正确缩进绑定(bind)?

clojure - 更好的序列重复去除器

clojure - 创建需要多次关闭的 channel

list - 替换子序列的函数

clojure - 在单独的 Clojure 命名空间中调用函数

url - Clojure 从组成部分构建 URL