¡Algo salió mal! Este artículo fue escrito como una tarea de prueba para un puesto en el equipo de JavaRush. Y fue escrito como una conferencia en toda regla. Por ello, te garantizo la calidad y cantidad de conocimientos útiles acumulados en este post. Además de información práctica y teórica, el artículo contiene datos interesantes que quizás ni siquiera conozcas.
¡Hola Mundo!
El escape de personajes es una solución técnica muy interesante y necesaria. La necesidad de escapar de los personajes ha jugado un papel importante en la historia de toda la industria de la programación. En este artículo, hablaremos sobre qué es el escape de caracteres, por qué es necesario escapar de ellos y cómo se implementa el escape de caracteres en Java. El artículo proporcionará ejemplos y datos interesantes relacionados con el tema del escape de personajes. ¡Disfruta leyendo! Toda la información en un sistema informático está representada en forma de texto, que en un nivel inferior está representado por bytes. Cuando escribimos una carta o un mensaje, escribimos un texto que será comprensible para una persona. Cuando escribimos código en el IDE, escribimos texto que el compilador puede analizar. En Java, el texto se puede representar como un tipo
String
cuyos datos están representados por caracteres de control: comillas emparejadas.
String str = "Hello World!";
Con el texto "¡Hola mundo!" No surgen problemas, pero ¿qué pasa si es necesario resaltar el mismo texto en un discurso directo? Usando las reglas gramaticales, queda claro que el texto "¡Hola mundo!", además de los caracteres de control del tipo
String
, debe colocarse entre comillas directas.
String str = "Java said, "Hello World!"";
Esta opción no funcionará porque el compilador simplemente no entenderá en qué punto termina la inicialización de la variable
str
. Para solucionar este y otros problemas similares, se inventó
el escape de caracteres , es decir, cambiar
los caracteres de control a las llamadas secuencias de control, también conocidas como
secuencias de escape . A continuación se muestra una lista de secuencias de escape de Java válidas para usar en cadenas.
\t
— Carácter de tabulación (en java, el equivalente a cuatro espacios);
\b
— Un carácter de retorno en el texto un paso atrás o eliminar un carácter en una línea (retroceso);
\n
— Símbolo de nueva línea;
\r
— símbolo de retorno de carro;
\f
— Saltar la página al principio de la página siguiente;
\'
— Carácter de comilla simple;
\"
— Carácter de comillas dobles;
\\
— El carácter de barra invertida (
\
). Ahora resaltemos el discurso directo en nuestra frase para que el compilador pueda analizar fácilmente lo que está escrito.
String str = "Java said, \"Hello World!\"";
Por lo tanto, el texto escrito es comprensible tanto para el compilador como para una persona si el contenido de la variable
str
se muestra en la pantalla. Descubrimos qué es el personaje que escapa y por qué es necesario. ¡E incluso escaparon del carácter de comillas dobles! Procedamos a analizar las secuencias de escape restantes.
El carácter de tabulación en una línea se indica mediante una secuencia de escape
\t
y es análogo a cuatro espacios. Sin embargo, si la longitud de una cadena que consta de cuatro espacios es igual a la longitud de cuatro caracteres, entonces la longitud de una cadena con un carácter de tabulación será igual a uno. El carácter de tabulación se utiliza a menudo para construir tablas o elementos de interfaz
pseudográficos , porque... Esto es más conveniente que escribir cuatro espacios. A continuación se muestra un ejemplo de una interfaz pseudográfica.
Entre todas las secuencias de escape, el símbolo es
\b
quizás el más interesante, porque nos permite borrar el último carácter de la línea de salida, similar a si lo borramos presionando la tecla
de retroceso .
System.out.print("2 + 2 = 5");
System.out.print("\b");
System.out.print("4");
Los símbolos
\n
tienen
\r
una historia común: veámoslos juntos. Es posible que haya encontrado el carácter de salto de línea
\n
antes. Por ejemplo, si un método
println()
genera información para que la siguiente salida sea en una nueva línea, entonces el método
print()
no realiza un salto de línea después de la salida, pero si agrega un carácter al final de la salida
\n
, entonces un salto de línea será realizado.
System.out.print("La próxima salida estará en una nueva línea\n");
System.out.println("La próxima salida estará en una nueva línea");
El carácter de retorno de carro
\r
nos permite devolver el cursor al principio de la línea de salida y mostrar nueva información como si no hubiera nada anteriormente en esa línea.
System.out.print("Texto a reescribir".);
System.out.print('\r');
System.out.print("Nuevo texto.");
De hecho, el retorno de carruaje se remonta a la época en que se imprimía texto en máquinas de escribir. Para realizar un avance de línea, era necesario mover el carro y bajar la palanca (parte del mecanismo de la máquina de escribir), después de lo cual se realizaría el avance de línea. Si no se bajaba la palanca, se podía seguir imprimiendo en la misma línea. Esto es lo que observamos cuando mostramos el símbolo
\r
. En este sentido, cuando el programador quería realizar un salto de línea, por costumbre ejecutaba una secuencia de caracteres al final de la salida
\r\n
. Cuando la era de la máquina de escribir llegó a su fin, hubo una generación de programadores que todavía usaban esta secuencia, aunque nunca habían trabajado con una máquina de escribir. A menudo olvidaban en qué orden debían completar una secuencia determinada,
\r\n
o
\n\r
. Entonces les ayudó una palabra de prueba
return
, en la que era claramente visible el orden en el que se mostraban estos símbolos. Sin embargo, más tarde, al desarrollar software para las primeras versiones de Windows, después de MS-DOS, los programadores se vieron obligados a utilizar la secuencia
\r\n
. Ahora no tienes que preocuparte por esto y usa solo el carácter para romper una línea
\n
.
Retrocedamos de nuevo en el tiempo, allá por los años 80. Fue entonces cuando
\f
se hizo popular el símbolo de avance de página al principio de la página siguiente. En ese momento, existían impresoras de líneas grandes, para trabajar con las cuales era necesario escribir un código de programa que detuviera qué y cómo debía imprimir la impresora. Y para indicar que el texto debe iniciarse desde una nueva página se utilizó el símbolo
\f
. Hoy en día, este símbolo ha perdido su relevancia hace mucho tiempo y es poco probable que alguna vez lo encuentre. Las dimensiones de la impresora lineal son bastante impresionantes.
Con los símbolos
\’
y
\\
todo es exactamente igual que con el escape de una comilla doble, había un ejemplo al principio del artículo. Tendrá que escapar de una comilla simple, por ejemplo, para inicializar el tipo char con una comilla simple.
char ch = '\'';
Escape el carácter de barra invertida para indicar que el siguiente carácter no formará parte de la secuencia de escape.
System.out.println("\\n - secuencia de escape de salto de línea");
En la práctica, a menudo hay que evitar las barras invertidas cuando se trabaja con rutas:
System.out.println("It's Java string: \"C:\\Program Files\\Java\\jdk1.7.0\\bin\"");
Enfaticé que estas secuencias de escape se usan en cadenas (literales de cadena), porque el resto se utiliza para describir expresiones regulares de clase
Pattern
y no es relevante para el tema de este artículo.
Aquí puede ver una lista de todas las secuencias de escape de la clase
Pattern
. Sin embargo, vale la pena señalar que las expresiones regulares en la forma en que existen ahora no se pueden imaginar sin el uso de secuencias de escape, no sólo en Java, sino también en otros lenguajes de programación populares, por ejemplo PHP. En Java, el escape de caracteres también se utiliza en el formato de cadenas. Por ejemplo, al especificar un formato de cadena para mostrar el símbolo de porcentaje, debe duplicar el símbolo de porcentaje -
%%
; de lo contrario, obtendremos un error y el IDE le pedirá que agregue el porcentaje.
System.out.printf("Porcentaje de grasa de la leche: %d%%", 10);
Esto concluye el artículo. Espero que hayas aprendido mucho sobre cómo escapar de personajes y cómo ponerlo en práctica. El escape de caracteres es inherente a muchos lenguajes de programación. En Java, como en otros lenguajes tipo C, esta tecnología se implementa de manera casi idéntica. Por lo tanto, el conocimiento que obtenga de este artículo puede ser útil no solo en Java. ¡Gracias por tu atención y buena suerte con tus estudios!
GO TO FULL VERSION