在Python中,我可以在r
前加上一个字符串文字(原始字符串),以告诉解释器不要翻译字符串中的特殊字符:
>>> r"abc\nsdf#$%\^"
r"abc\nsdf#$%\^"
有没有办法在Clojure中做同样的事情?
答案 0 :(得分:15)
Clojure字符串是Java字符串,读者不会添加任何重要的解释。 The reader page只是说“支持标准的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>
所以,我认为基本答案是否定的。
答案 1 :(得分:5)
请注意,如果您使用的是逆时针(用于Clojure的Eclipse插件),则有一种称为“智能粘贴”的模式(默认情况下禁用),当您粘贴到现有内容时,它会正确转义特殊字符。文字字符串。
答案 2 :(得分:2)
可用于此类目的的文字正则表达式。
user=> #"abc\nsdf#$%\^"
#"abc\nsdf#$%\^"
user=> (type #"abc\nsdf#$%\^")
java.util.regex.Pattern
user=> (println (str #"abc\nsdf#$%\^"))
abc\nsdf#$%\^
nil