clojure escaping rawstring

¿El clojure tiene una cuerda cruda?



escaping rawstring (3)

En Python, puedo prefijar una r a un literal de cadena (cadena sin formato) para decirle al intérprete que no traduzca caracteres especiales en la cadena:

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

¿Hay alguna manera de hacer lo mismo en Clojure?


Las cadenas de Clojure son cadenas de Java y el lector no agrega nada significativo a su interpretación. La página del lector simplemente dice "los caracteres de escape Java estándar son compatibles".

Puedes escapar de la / aunque

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

Esto solo afecta a los literales de cadena leídos por el lector, por lo que si lee cadenas de un archivo, el lector nunca los ve:

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

Entonces, creo que la respuesta básica es no.


Puede ser de utilidad para una expresión regular literal para tales fines.

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


Tenga en cuenta también que si usa Counterclockwise (el complemento de Eclipse para Clojure), hay un modo llamado "pegado inteligente" (desactivado de forma predeterminada) que se encarga de eliminar correctamente los caracteres especiales al pegar dentro de una cadena literal existente.