u00e9 - ¿Por qué no puedo usar / u000d y / u000a como CR y LF en Java?
in java (2)
Los escapes Unicode se procesan previamente antes de ejecutar el compilador. Por lo tanto, si coloca /u000A
en un literal de cadena como este:
String someString = "foo/u000Abar";
Será compilado exactamente como si usted escribió:
String someString = "foo
bar";
Adherirse a /r
(retorno de carro; 0x0D
) y /n
( 0x0A
línea; 0x0A
)
Bonificación: siempre puedes divertirte con esto, especialmente dadas las limitaciones en la mayoría de los resaltadores de sintaxis. La próxima vez que tengas un segundo, intenta ejecutar este código:
public class FalseIsTrue {
public static void main(String[] args) {
if ( false == true ) { //these characters are magic: /u000a/u007d/u007b
System.out.println("false is true!");
}
}
}
¿Por qué no puedo usar / u000d y / u000a como CR y LF en Java? Da un error cuando compilo el código:
illegal line end in character literal
Porque se encuentra dentro del rango de caracteres de control Unicode
Que es U+0000–U+001F
y U+007F
.
Los caracteres de control Unicode se usan para controlar la interpretación o visualización del texto, pero estos personajes no tienen representación visual o espacial.
Se pueden escapar usando /
like descrito en la respuesta anterior por @Mark
DESDE RFC :
2.5. Instrumentos de cuerda
La representación de cadenas es similar a las convenciones utilizadas en la familia C de lenguajes de programación. Una cadena comienza y termina con comillas. Todos los caracteres Unicode pueden colocarse entre comillas, excepto los caracteres que se deben escapar: comillas, solidus reverso y los caracteres de control (U + 0000 a U + 001F).
Cualquier personaje puede ser escapado.