CodeGym/Blog Java/Random-ES/Caracteres de escape de Java
Autor
Vasyl Malik
Senior Java Developer at CodeGym

Caracteres de escape de Java

Publicado en el grupo Random-ES
¡Hola! En lecciones anteriores, ya nos familiarizamos con las cadenas de texto, que están representadas por la clase String en Java. Como probablemente recuerde, una cadena es una secuencia de caracteres. Estos caracteres pueden ser letras, números, signos de puntuación, etc. Lo principal al crear una cadena es que toda la secuencia debe estar entre comillas:
public class Main {
   public static void main(String[] args) {
       String alex = new String ("My name is Alex. I'm 20!");
   }
}
Pero, ¿qué hacemos si necesitamos crear una cadena que debe contener comillas? Por ejemplo, supongamos que queremos contarle al mundo sobre su libro favorito:
public class Main {
   public static void main(String[] args) {
       String myFavoriteBook = new String ("My favorite book is "Twilight" by Stephanie Meyer");
   }
}
¡Parece que el compilador no está contento con algo! ¿Cuál crees que podría ser el problema? ¿Y qué tiene que ver con las comillas? De hecho, todo es muy simple. El compilador interpreta las comillas de una manera muy específica, es decir, espera que las cadenas se envuelvan en ellas. Y cada vez que el compilador ve ", espera que las comillas sean seguidas por una segunda comilla, y que el contenido entre ellas sea el texto de una cadena que creará el compilador. En nuestro caso, las comillas alrededor la palabra "Crepúsculo" está dentro de otras comillas . Cuando el compilador llega a este fragmento de texto, simplemente no entiende lo que se espera que haga. Las comillas sugieren que se debe crear una cadena. Pero eso es lo que hace el compilador. ya¡haciendo! He aquí por qué: simplemente hablando, el compilador se confunde acerca de lo que se espera que haga. "¿Otra comilla? ¿Es algún tipo de error? ¡Ya estoy creando una cadena! ¿O debería crear otra? ¡Argh!...:/" Necesitamos que el compilador sepa cuando una comilla es un comando ( "¡crea una cadena!") y cuando es simplemente un carácter ("¡muestra la palabra "Crepúsculo" entre comillas!"). Para hacer esto, Java usa caracteres de escape . Esto se logra usando un símbolo especial: \ . Este símbolo normalmente se llama "barra invertida". En Java, una barra inclinada invertida combinada con un carácter que debe "escaparse" se denomina secuencia de control . Por ejemplo, \"es una secuencia de control para mostrar comillas en la pantalla. Al encontrar esta construcción en su código, el compilador entenderá que esto es solo una comilla que debe mostrarse en la pantalla. Intentemos cambiar nuestro código con el libro:
public static void main(String[] args) {
       String myFavoriteBook = new String ("My favorite book is \"Twilight\" by Stephanie Meyer");
       System.out.println(myFavoriteBook);
   }
}
Hemos usado \ para escapar de nuestras dos comillas "internas". Intentemos ejecutar el método main() ... Salida de la consola:
My favorite book is "Twilight" by Stephanie Meyer
¡Excelente! ¡El código funcionó exactamente como queríamos! Las comillas no son de ninguna manera los únicos caracteres de los que podemos necesitar escapar. Supongamos que queremos contarle a alguien sobre nuestro trabajo:
public class Main {
   public static void main(String[] args) {
       String workFiles= new String ("My work files are in D:\Work Projects\java");
       System.out.println(workFiles);
   }
}
¡Otro error! ¿Puedes adivinar por qué? Una vez más, el compilador no sabe qué hacer. ¡Después de todo, el compilador no conoce \ como nada más que una secuencia de control ! Espera que la barra invertida sea seguida por un cierto carácter que de alguna manera debe interpretar de una manera especial (como una comilla). Pero, en este caso, \ va seguida de letras ordinarias. Entonces el compilador se vuelve a confundir. ¿Qué debemos hacer? Exactamente lo mismo que antes: simplemente agregamos otro \ a nuestro \ !
public class Main {

   public static void main(String[] args) {

       String workFiles= new String ("My work files are in D:\\Work Projects\\java");
       System.out.println(workFiles);

   }
}
Veamos qué obtenemos: Salida de la consola:
My work files are in D:\Work Projects\java
¡Súper! El compilador determina inmediatamente que \ son caracteres ordinarios que deben mostrarse junto con el resto. Java tiene bastantes secuencias de control. Aquí está la lista completa:
  • \t - pestaña.
  • \b - retroceso (un paso hacia atrás en el texto o la eliminación de un solo carácter).
  • \n - nueva línea.
  • \r - retorno de carro. ()
  • \f - alimentación de formulario.
  • \' comilla simple.
  • \" comillas dobles.
  • \\ barra invertida.
Por lo tanto, si el compilador encuentra \n en el texto, entiende que esto no es solo un símbolo y una letra para mostrar en la consola, sino un comando especial para "¡pasar a una nueva línea!". Por ejemplo, esto puede ser útil si queremos mostrar parte de un poema:
public class Main {
   public static void main(String[] args) {
       String byron = new String ("She walks in beauty, like the night, \nOf cloudless climes and starry skies\nAnd all that's best of dark and bright\nMeet in her aspect and her eyes...");
       System.out.println(byron);
   }
}
Esto es lo que obtenemos: Salida de la consola:
She walks in beauty, like the night,
Of cloudless climes and starry skies
And all that's best of dark and bright
Meet in her aspect and her eyes...
¡Justo lo que queríamos! El compilador reconoció la secuencia de escape y emitió un extracto del poema en 4 líneas.

Escape de caracteres Unicode

Otro tema importante que debe conocer en relación con los caracteres de escape es Unicode. Unicode es una codificación de caracteres estándar que incluye los símbolos de casi todos los idiomas escritos del mundo. En otras palabras, ¡es una lista de códigos especiales que representan casi todos los caracteres en cualquier idioma! Naturalmente, esta es una lista muy larga y nadie se la aprende de memoria :) Si quiere saber de dónde vino y por qué se hizo necesario, lea este artículo informativo: https://docs.oracle.com/javase/tutorial/ i18n/text/unicode.html Todos los códigos de caracteres Unicode tienen la forma " u+<dígito hexadecimal>". Por ejemplo, el conocido símbolo de copyright está representado por u00A9. Entonces, si necesita usar este carácter cuando trabaja con texto en Java, ¡puede escaparlo en su texto! Por ejemplo, queremos para informar a todos que CodeGym posee los derechos de autor de esta lección:
public class Main {
   public static void main(String[] args) {
       System.out.println("\"Escaping characters\", \u00A9 2019 CodeGym");
   }
}
Salida de la consola:
"Escaping characters", © 2019 CodeGym
¡Genial, todo salió bien! ¡Pero no se trata solo de símbolos especiales! Puede usar Unicode y caracteres de escape para codificar texto escrito simultáneamente en diferentes idiomas. ¡E incluso texto escrito en varios dialectos diferentes del mismo idioma!
public class Main {
   public static void main(String[] args) {

       System.out.println("\u004d\u0061\u006f \u005a\u0065\u0064\u006f\u006e\u0067 " +

               "\u0028\u0054\u0072\u0061\u0064\u0069\u0074\u0069\u006f\u006e\u0061\u006c " +

               "\u0043\u0068\u0069\u006e\u0065\u0073\u0065\u003a \u6bdb\u6fa4\u6771\u002c " +

               "\u0053\u0069\u006d\u0070\u006c\u0069\u0066\u0069\u0065\u0064 " +

               "\u0043\u0068\u0069\u006e\u0065\u0073\u0065\u003a \u6bdb\u6cfd\u4e1c\u002c " +

               "\u0050\u0069\u006e\u0079\u0069\u006e\u003a \u004d\u00e1\u006f " +

               "\u005a\u00e9\u0064\u014d\u006e\u0067\u0029 \u0077\u0061\u0073 \u0061 " +

               "\u0032\u0030\u0074\u0068\u002d\u0063\u0065\u006e\u0074\u0075\u0072\u0079 " +

               "\u0043\u0068\u0069\u006e\u0065\u0073\u0065 " +

                "\u0073\u0074\u0061\u0074\u0065\u0073\u006d\u0061\u006e\u002c " +

               "\u0070\u006f\u006c\u0069\u0074\u0069\u0063\u0069\u0061\u006e\u002c " +

               "\u0061\u006e\u0064 \u0074\u0068\u0065 \u0063\u0068\u0069\u0065\u0066 " +

               "\u0074\u0068\u0065\u006f\u0072\u0065\u0074\u0069\u0063\u0069\u0061\u006e " +

               "\u006f\u0066 \u004d\u0061\u006f\u0069\u0073\u006d\u002e");
   }
}
Salida de la consola:
Mao Zedong (Traditional Chinese: 毛澤東, Simplified Chinese: 毛泽东, Pinyin: Máo Zédōng) was a 20th-century Chinese statesman, politician, and the chief theoretician of Maoism.
En este ejemplo, usamos códigos de caracteres para crear una cadena que consiste en inglés y tres (!) tipos diferentes de caracteres chinos: tradicional, simplificado y latino (Pinyin). ¡Y eso lo resume todo! Ahora que sabe lo suficiente sobre caracteres de escape para usar esta gran herramienta en su trabajo :) Para reforzar lo que aprendió, le sugerimos que vea una lección en video de nuestro Curso de Java
Comentarios
  • Populares
  • Nuevas
  • Antiguas
Debes iniciar sesión para dejar un comentario
Esta página aún no tiene comentarios