2012-06-15 24 views
14

Python, ben dizede özel karakterler çevirmeyin tercümana anlatmak için bir dize (ham dize) bir r öneki: Clojure aynı şeyi yapmanın bir yoluclojure ham dizesi var mı?

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

var mı?

cevap

14

Clojure dizgileri, Java dizeleridir ve okuyucu, yorumlarına önemli bir şey eklemez. The reader page sadece "standart Java kaçış karakterleri destekleniyor" diyor.

Sen kaçabilir \ olsa: Yani

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

: Bir dosyadan dizeleri okursanız okuyucu onları görür asla

user> (print "abc\\nsdf#$%\\^") 
abc\nsdf#$%\^ 

Bu yalnızca, okuyucu tarafından okunan dize hazır etkileyecek Bence temel cevap hayır.

2

Bu gibi amaçlar için basit bir düzenli ifadede kullanılabilir.

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

Eh, belki bu kötü. – BLUEPIXY

5

ayrıca Counterclockwise (Clojure için Eclipse eklentisi) kullanıyorsanız, doğru özel karakterler sizi kaçan ilgilenir (varsayılan olarak devre dışıdır) "akıllı macun" olarak adlandırılan bir mod var olduğuna dikkat edin Varolan bir değişmez String'in içine yapıştır.