Descripción general
El formateo de cadenas y la generación de salidas de texto surgen a menudo durante la programación. En muchos casos, existe la necesidad de añadir una nueva línea a una cadena para dar formato a la salida.
Discutiremos cómo utilizar caracteres de nueva línea.
Lectura adicional:
Comprobación de cadenas vacías o en blanco en Java
Comprobar si una cadena contiene una subcadena
Añadir caracteres de nueva línea en una cadena
Los sistemas operativos tienen caracteres especiales que denotan el inicio de una nueva línea. Por ejemplo, en Linux, una nueva línea se denota con «\n», también llamado salto de línea. En Windows, una nueva línea se denota usando «\r\n», a veces llamado Retorno de Carro y Avance de Línea, o CRLF.
Añadir una nueva línea en Java es tan simple como incluir «\n» , «\r», o «\r\n» al final de nuestra cadena.
2.1. Usando saltos de línea CRLF
Para este ejemplo, queremos crear un párrafo usando dos líneas de texto. En concreto, queremos que la línea2 aparezca en una nueva línea después de la línea1.
Para un sistema operativo basado en Unix/Linux/New Mac podemos utilizar «\n»:
String line1 = "Humpty Dumpty sat on a wall.";String line2 = "Humpty Dumpty had a great fall.";String rhyme = line1 + "\n" + line2;
Si estamos en un sistema operativo basado en Windows, podemos utilizar «\r\n»:
rhyme = line1 + "\r\n" + line2;
Si estamos en un SO antiguo basado en Mac, podemos usar «\r»:
rhyme = line1 + "\r" + line2;
Hemos demostrado tres métodos para añadir una nueva línea, pero desgraciadamente, dependen de la plataforma.
2.2. Usar separadores de línea independientes de la plataforma
Podemos usar constantes definidas por el sistema cuando queremos que nuestro código sea independiente de la plataforma.
Por ejemplo, usar System.lineSeparator() para dar un separador de línea:
rhyme = line1 + System.lineSeparator() + line2;
O también podríamos utilizar System.getProperty(«line.separator»):
rhyme = line1 + System.getProperty("line.separator") + line2;
2.3. Uso de caracteres de nueva línea independientes de la plataforma
Aunque los separadores de línea proporcionan independencia de la plataforma, nos obligan a concatenar nuestras cadenas.
Si estamos usando algo como System.out.printf o String.format, entonces el carácter de nueva línea independiente de la plataforma, %n, se puede utilizar directamente dentro de una cadena:
rhyme = "Humpty Dumpty sat on a wall.%nHumpty Dumpty had a great fall.";
Esto es lo mismo que incluir System.lineSeparator() dentro de nuestra cadena, pero no necesitamos dividir la cadena en múltiples partes.
Añadir caracteres de nueva línea en una página HTML
Supongamos que estamos creando una cadena que forma parte de una página HTML. En ese caso, podemos añadir una etiqueta de salto HTML <br>.
También podemos utilizar los caracteres Unicode «& #13;» (Retorno de carro) y «& #10;» (Avance de línea). Aunque estos caracteres funcionan, no lo hacen exactamente como cabría esperar en todas las plataformas. En su lugar, es mejor utilizar <br> para los saltos de línea.
Además, podemos utilizar «\n» en algunos elementos HTML para romper una línea.
En general, estos son los tres métodos para romper una línea en HTML. Podemos decidir cuál usar dependiendo de la etiqueta HTML que estemos usando.
3.1. Etiqueta de ruptura HTML
Podemos utilizar la etiqueta de ruptura HTML <br> para romper una línea:
rhyme = line1 + "<br>" + line2;
La etiqueta <br> para romper una línea funciona en casi todos los elementos HTML como <body><p><pre>, etc. Sin embargo, ten en cuenta que no funciona en la etiqueta <textarea>.
3.2. Carácter de nueva línea
Podemos utilizar para romper una línea si el texto está encerrado en <pre> o <textarea> etiqueta:
rhyme = line1 + "\n" + line2;
3.3. Caracteres Unicode
Por último, podemos utilizar los caracteres Unicode «& #13;» (Retorno de carro) y «& #10;» (Avance de línea) para romper una línea. Por ejemplo, en la etiqueta <textarea> podemos utilizar cualquiera de ellas:
rhyme = line1 + "" + line2;rhyme = line1 + "" + line2;
Para la etiqueta <pre>, funcionarán las dos líneas siguientes:
rhyme = line1 + "" + line2;rhyme = line1 + "" + line2;
La diferencia entre \n y \r
r y \n son caracteres denotados con valores ASCII de 13 (CR) y 10 (LF), respectivamente. Ambos representan un salto entre dos líneas, pero los sistemas operativos los utilizan de forma diferente.
En Windows, se utiliza una secuencia de dos caracteres para iniciar una nueva línea, CR inmediatamente seguido de LF. Por el contrario, en los sistemas tipo Unix, sólo se utiliza LF.
Al escribir aplicaciones Java, debemos prestar atención a los caracteres de salto de línea que utilizamos, ya que las aplicaciones se comportarán de forma diferente dependiendo del sistema operativo en el que se ejecuten.
La opción más segura y compatible entre sistemas es utilizar System.lineSeparator(). De esta forma, no tendremos que tener en cuenta el sistema operativo.
Conclusión
En este artículo, hemos visto cómo añadir caracteres de nueva línea a una cadena en Java.
También hemos visto cómo escribir código independiente de la plataforma para una nueva línea utilizando System.lineSeparator() y System.getProperty(«line.separator»).
Por último, terminamos con cómo añadir una nueva línea en caso de que estemos generando una página HTML.
La implementación completa de este artículo se puede encontrar en GitHub.