(str "I don't know what " (:name a) " eats."))
我知道这是用变量构造字符串的正确方法。 但有没有类似的方法?
(str "I dont know what %s eats." (:name a))
我试过,这不是有效的语法,但在Clojure中有类似的方法吗?
感谢。
答案 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.format
。 cl-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."