Joh*_*ang 16 escaping clojure rawstring
在Python中,我可以r为字符串文字(原始字符串)添加前缀,以告诉解释器不要在字符串中翻译特殊字符:
>>> r"abc\nsdf#$%\^"
r"abc\nsdf#$%\^"
Run Code Online (Sandbox Code Playgroud)
有没有办法在Clojure中做同样的事情?
Art*_*ldt 15
Clojure字符串是Java字符串,读者不会添加任何重要的解释.读者页面只是说"支持标准的Java转义字符".
你可以逃避\:
user> (print "abc\\nsdf#$%\\^")
abc\nsdf#$%\^
Run Code Online (Sandbox Code Playgroud)
这只会影响阅读器读取的字符串文字,因此如果您从文件中读取字符串,则读者永远不会看到它们:
user> (spit "/tmp/foo" "abc\\nsdf#$%\\^")
nil
user> (slurp "/tmp/foo")
"abc\\nsdf#$%\\^"
user> (print (slurp "/tmp/foo"))
abc\nsdf#$%\^nil
user>
Run Code Online (Sandbox Code Playgroud)
所以,我认为基本答案是否定的.
另请注意,如果您使用的是Counterclockwise(Clojure的Eclipse插件),则会有一种称为"智能粘贴"的模式(默认情况下禁用),当您粘贴到现有文字字符串内部时,它会正确转义特殊字符.