2012-06-15 1 views
14

Pythonでは、私は、文字列の特殊文字を変換しないインタプリタを伝えるために、文字列リテラル(生の文字列)にrの前に付けることができます:Clojureの中で同じことを行う方法がクロージャーに生の文字列がありますか?

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

ありますか?

答えて

14

Clojure文字列はJava文字列であり、読者はその解釈に重要なものを追加しません。 The reader pageでは、「標準のJavaエスケープ文字がサポートされています」と表示されます。

あなたが逃げることができる\かかわら:だから

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

は:あなたは、ファイルから文字列を読めば、読者はそれらを見たことがないので、

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

これは、リーダーで読み取り、文字列リテラルに影響を与えます基本的な答えはノーだと思います。

2

このような目的のために、リテラルの正規表現には使用できます。

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

これはおそらく、これは悪いことです。 – BLUEPIXY

5

はまた、あなたが反時計回り(ClojureのためのEclipseプラグイン)を使用している場合は、ときに正しく特殊文字のエスケープの世話をする(デフォルトでは無効)、「スマートペースト」と呼ばれるモードがあることに注意してください既存のリテラル文字列の中に貼り付けます。

関連する問題