clojure有原始字符串吗?

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)

所以,我认为基本答案是否定的.


Lau*_*tit 5

另请注意,如果您使用的是Counterclockwise(Clojure的Eclipse插件),则会有一种称为"智能粘贴"的模式(默认情况下禁用),当您粘贴到现有文字字符串内部时,它会正确转义特殊字符.