Jus*_*ton 27 string clojure type-conversion
我目前遇到一个问题,我必须从命令行中读取包含至少一个整数的文本文件.我正在读取文件,进行正则表达式匹配以忽略空格.
(re-seq #"[0-9]+" (slurp (first *command-line-args*)))
Run Code Online (Sandbox Code Playgroud)
在此之后,我必须编写一个完整的函数,只是为了将这个字符串序列转换为整数序列.显然我无法映射Integer.到序列(除非我使用的地图不正确).
是否有一些优雅的处理方式,类似于地图?或者我是否必须首先通过递归弹出并将其转换Integer.为使其工作?
我正在学习Clojure,当我学习一些东西时,我会回去做一些程序员小测验,我曾经学过其他语言.
Ray*_*yne 47
你在找Integer/parseInt.
user=> (map #(Integer/parseInt %) ["1" "2" "3" "4"])
(1 2 3 4)
Run Code Online (Sandbox Code Playgroud)
您必须包装Integer/parseInt一个匿名函数,因为Java方法不是函数.
read-string 也适用于这种情况:
user=> (map read-string ["1" "2" "3" "4"])
(1 2 3 4)
Run Code Online (Sandbox Code Playgroud)
read-string从字符串中读取任何对象,而不仅仅是整数.所以,如果你这样做,(read-string "1.0")你会得到一个双倍.从外部资源中读取时,通常最好将可读取的内容限制为您需要的内容,在这种情况下,这是一个整数.因此,我建议使用我的第一个例子.