如何将clojure关键字转换为string?
在我的应用程序,我需要转换clojure关键字例如。 :var_name成一个string“var_name”。 任何想法如何可以做到?
user=> (doc name) ------------------------- clojure.core/name ([x]) Returns the name String of a string, symbol or keyword. nil user=> (name :var_name) "var_name"
实际上,获取关键字的命名空间部分同样简单:
(name :foo/bar) => "bar" (namespace :foo/bar) => "foo"
请注意,具有多个段的命名空间用“。”分隔,而不是“/”
(namespace :foo/bar/baz) => throws exception: Invalid token: :foo/bar/baz (namespace :foo.bar/baz) => "foo.bar"
这也适用于命名空间限定的关键字:
;; assuming in the namespace foo.bar (namespace ::baz) => "foo.bar" (name ::baz) => "baz"
请注意,kotarak的答案不会返回关键字的名称空间部分,只是名称部分 – 所以:
(name :foo/bar) >"bar"
使用他的其他评论给你所要求的:
(subs (str :foo/bar) 1) >"foo/bar"
这也会给你一个关键字的string:
(str (name :baz)) -> "baz" (str (name ::baz)) -> "baz"