将字符串序列转换为整数(Clojure)

时间:2011-01-17 15:35:43

标签: string clojure type-conversion

我目前遇到一个问题,我必须从命令行中读取包含至少一个整数的文本文件。我正在读取文件,进行正则表达式匹配以忽略空格。

(re-seq #"[0-9]+" (slurp (first *command-line-args*)))

在此之后我必须编写一个完整的函数来将这个字符串序列转换为整数序列。显然我无法将Integer.映射到序列(除非我使用的地图不正确)。

是否有一些优雅的处理方式,类似于地图?或者我是否必须首先通过递归弹出并将其投射到Integer.以使其工作?

我目前正在学习Clojure,当我学习一些内容时,我会回去做一些程序员小测验,我曾经学过其他语言。

1 个答案:

答案 0 :(得分:46)

您正在寻找Integer/parseInt

user=> (map #(Integer/parseInt %) ["1" "2" "3" "4"])
(1 2 3 4)

您必须将Integer/parseInt包装在匿名函数中,因为Java方法不是函数。

在这种情况下,

read-string也适用:

user=> (map read-string ["1" "2" "3" "4"])
(1 2 3 4)

read-string从字符串中读取任何对象,而不仅仅是整数。所以,如果你做(read-string "1.0"),你会得到一个双倍。从外部资源中读取时,通常最好将可读取的内容限制为您需要的内容,在这种情况下,这是一个整数。因此,我建议使用我的第一个例子。