2012-06-15 25 views
14

Trong Python, tôi có thể thêm tiền tố một r thành một chuỗi chữ (chuỗi nguyên) nói với người phiên dịch không dịch ký tự đặc biệt trong chuỗi:Clojure có chuỗi thô không?

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

Có cách nào để làm điều tương tự trong Clojure?

Trả lời

14

Chuỗi clojure là chuỗi Java và người đọc không thêm bất kỳ điều gì quan trọng vào cách diễn giải của họ. The reader page chỉ nói "các ký tự thoát Java tiêu chuẩn được hỗ trợ".

Bạn có thể thoát khỏi \ mặc dù:

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

này chỉ ảnh hưởng xâu đọc bởi người đọc, vì vậy nếu bạn đọc chuỗi từ một tập tin độc giả không bao giờ nhìn thấy chúng:

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

Vì vậy, , Tôi nghĩ câu trả lời cơ bản là không.

2

Có thể được sử dụng cho cụm từ thông dụng theo nghĩa đen cho các mục đích như vậy.

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

Vâng, có thể điều này là xấu. – BLUEPIXY

5

Xin lưu ý rằng nếu bạn đang sử dụng Ngược (plugin Eclipse cho Clojure), có một chế độ, được gọi là "dán thông minh" (tắt theo mặc định) mà sẽ chăm sóc của thoát một cách chính xác ký tự đặc biệt khi bạn dán bên trong một chuỗi chữ hiện có.

Các vấn đề liên quan