Clojure将var嵌入到String中,另一种方法是什么?喜欢sprintf的方式?

时间:2015-02-14 05:35:14

标签: clojure

 (str "I don't know what " (:name a) " eats."))

我知道这是用变量构造字符串的正确方法。 但有没有类似的方法?

(str "I dont know what %s eats." (:name a))

我试过,这不是有效的语法,但在Clojure中有类似的方法吗?

感谢。

2 个答案:

答案 0 :(得分:4)

format就是你想要的。例如:

(format "I don't know what %s eats." "Joe")

=> "I don't know what Joe eats."

答案 1 :(得分:4)

Diego Basch提到format,这是一个很好的答案。您也可以使用cl-format

(clojure.pprint/cl-format nil "I don't know what ~a eats." "Joe")

nil作为第二个参数,返回一个字符串。第二个参数的其他选项将导致字符串被写入某处。

format使用java.lang.String.formatcl-format是Common Lisp' format的Clojure版本。对于格式化字符串,它们的功能非常相似,但有一些cl-format能够很好地完成Clojure format的功能。简单示例 - 打印nil

(format "I don't know what %s eats." nil)
;=> "I don't know what null eats."

(clojure.pprint/cl-format nil "I don't know what ~a eats." nil)
;=> "I don't know what nil eats."