2012-06-15 4 views
14

파이썬에서, 나는 문자열에 특수 문자를 번역하지 인터프리터를 알려주는 문자열 리터럴 (원시 문자열)에 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에 대한 이클립스 플러그인)을 사용하는 경우, 제대로 특수 문자 때 탈출을 담당한다 (기본적으로 비활성화) "스마트 붙여 넣기"라는 모드가 있습니다 기존 리터럴 String 안에 붙여 넣습니다.