如何将clojure数字字符串转换为单独的整数?

如何将clojure数字字符串转换为单独的整数?,clojure,Clojure,我可以像这样在repl中读取一些数据。对于一个真实的程序,我计划以一种特殊的形式分配 (def x1 (line-seq (BufferedReader. (StringReader. x1)))) 如果我输入5,x1将绑定到(“5”) 我想把一个元素的列表转换成两个整数的列表。我该怎么做?我一直在尝试解析空格上的字符串,但在执行到整数的转换时遇到了问题。这有帮助吗?在Clojure 1.3.0中: (use ['clojure.string :only '(split)]) (defn st

我可以像这样在repl中读取一些数据。对于一个真实的程序,我计划以一种特殊的形式分配

(def x1 (line-seq (BufferedReader. (StringReader. x1))))
如果我输入5,x1将绑定到(“5”)


我想把一个元素的列表转换成两个整数的列表。我该怎么做?我一直在尝试解析空格上的字符串,但在执行到整数的转换时遇到了问题。

这有帮助吗?在Clojure 1.3.0中:

(use ['clojure.string :only '(split)])
(defn str-to-ints
  [string]
  (map #(Integer/parseInt %)
        (split string #" ")))
(str-to-ints "5 4")
; => (5 4)
(apply str-to-ints '("5 4"))
; => (5 4)
如果您使用的Clojure版本没有
Clojure.string
命名空间,您可以跳过
use
命令,并按照以下方式定义函数

(defn str-to-ints
  [string]
  (map #(Integer/parseInt %)
        (.split #" " string)))

通过在最后一行中使用
(.split string“”)
可以去除正则表达式。

适用于所有数字,如果不是数字,则返回nil(因此可以在结果序列中过滤掉nil)

例如


字符串可以用括号括起来,然后用read string函数计算为clojure list:

(def f #(read-string (str "(" % ")")))
(f "5 4")
; => (5 4)

@googolplex,
(.split string“”)
实际上。谢谢你指出,我已经修改了答案。谢谢。您集成了两个步骤,这解释了为什么我在字符转换和字符串到字符转换方面出现一个错误。如果使用.split就这么简单,那么引入带有use函数的clojure.string库有什么意义呢?每一个都有自己的特定用例或一些东西吗?请考虑添加一些解释。
(map parse-number (string/split "1 2 3 78 90 -12 0.078" #"\s+"))
; => (1 2 3 78 90 -12 0.078)
(def f #(read-string (str "(" % ")")))
(f "5 4")
; => (5 4)