clojure有原始字符串吗?

clojure有原始字符串吗?,clojure,escaping,rawstring,Clojure,Escaping,Rawstring,在Python中,我可以将r作为字符串文本(原始字符串)的前缀,告诉解释器不要翻译字符串中的特殊字符: >>> r"abc\nsdf#$%\^" r"abc\nsdf#$%\^" 在Clojure中有没有同样的方法?Clojure字符串是Java字符串,读者不会对其解释添加任何重要内容。只是说“支持标准Java转义字符。” 您可以退出\,但: user> (print "abc\\nsdf#$%\\^") abc\nsdf#$%\^ 这只会影响读取器读取的字符串文本,

在Python中,我可以将
r
作为字符串文本(原始字符串)的前缀,告诉解释器不要翻译字符串中的特殊字符:

>>> r"abc\nsdf#$%\^"
r"abc\nsdf#$%\^"

在Clojure中有没有同样的方法?

Clojure字符串是Java字符串,读者不会对其解释添加任何重要内容。只是说“支持标准Java转义字符。”

您可以退出
\
,但:

user> (print "abc\\nsdf#$%\\^")
abc\nsdf#$%\^
这只会影响读取器读取的字符串文本,因此,如果从文件中读取字符串,读取器将永远看不到它们:

user> (spit "/tmp/foo" "abc\\nsdf#$%\\^")
nil
user> (slurp "/tmp/foo")
"abc\\nsdf#$%\\^"
user> (print (slurp "/tmp/foo"))
abc\nsdf#$%\^nil
user> 

因此,我认为基本的答案是否定的。

对于这样的目的,可以使用文字正则表达式

user=> #"abc\nsdf#$%\^"
#"abc\nsdf#$%\^"
user=> (type #"abc\nsdf#$%\^")
java.util.regex.Pattern
user=> (println (str #"abc\nsdf#$%\^"))
abc\nsdf#$%\^
nil

还请注意,如果您使用逆时针(Clojure的Eclipse插件),则有一种称为“智能粘贴”(默认情况下禁用)的模式,当您粘贴到现有文本字符串中时,该模式负责正确转义特殊字符