2010-03-09 21 views
14

Estoy leyendo un archivo de origen en Java, pero cuando lo imprimo (sysout), los caracteres escapados ya no se escapan. ¿Cómo puedo escapar caracteres como \n y \t en una cadena en Java?¿Cómo puedo escapar de una cadena en Java?

+0

¿Podría publicar el código actual para leer y enviar? – helios

+0

¿Cómo está leyendo en el archivo fuente? ¿Y cómo exactamente los estás imprimiendo? Según su descripción, no es obvio para mí dónde se están convirtiendo las secuencias de escape en los caracteres de escape que representan. –

Respuesta

17

Se debe utilizar la biblioteca StringEscapeUtils de la conocida Apache Commons. Encontrará que hay muchas otras ofertas en Apache Commons que podrían ser útiles para otros problemas que tiene en el desarrollo de Java, para que no reinvente la rueda.

La llamada específica que desea tiene que ver con "escape de Java"; la llamada API es StringEscapeUtils.escapeJava(). También hay muchas otras utilidades de escape en esa biblioteca.

4

Usando:

\\n y \\t

Algunos caracteres precedidos por una barra invertida (\) forman una secuencia de escape y tienen un significado especial para el compilador. Por lo tanto, en su caso \n y \t se consideran especiales (nueva línea y tabulación, respectivamente). Así que tenemos que escapar de la barra diagonal inversa para hacer que n y t sean tratados literalmente.

+0

El archivo que estoy leyendo contiene '\ n', y me gustaría convertirlo programáticamente a' \\ n' – Marius

5

Dada String s,

s = s.replace("\\", "\\\\"); 

sustituye a todas las \ con \\.

+3

Esto es incorrecto porque \ n se trata como un carácter por lo que \ no se encontrará para ser reemplazado por \\ –

Cuestiones relacionadas