Cadena Java multilínea

1. Información general

Debido al hecho de que todavía no existe una clase de cadena de varias líneas nativa en Java, es un poco complicado crear y utilizar cadenas de varias líneas.

En este tutorial, analizamos varios métodos para crear y usar cadenas de varias líneas en Java .

2. Obtener el separador de líneas

Cada sistema operativo puede tener su propia forma de definir y reconocer nuevas líneas. En Java, es muy fácil obtener el separador de línea del sistema operativo:

String newLine = System.getProperty("line.separator");

Vamos a utilizar esta nueva línea en las siguientes secciones para crear cadenas de varias líneas.

3. Concatenación de cadenas

La concatenación de cadenas es un método nativo sencillo que se puede utilizar para crear cadenas de varias líneas:

public String stringConcatenation() { return "Get busy living" .concat(newLine) .concat("or") .concat(newLine) .concat("get busy dying.") .concat(newLine) .concat("--Stephen King"); }

Usar el operador + es otra forma de lograr lo mismo. Los compiladores de Java traducen concat () y el operador + de la misma manera:

public String stringConcatenation() { return "Get busy living" + newLine + "or" + newLine + "get busy dying." + newLine + "--Stephen King"; }

4. Unión de cadenas

Java 8 introdujo String # join , que toma un delimitador junto con algunas cadenas como argumentos. Devuelve una cadena final que tiene todas las cadenas de entrada unidas con el delimitador:

public String stringJoin() { return String.join(newLine, "Get busy living", "or", "get busy dying.", "--Stephen King"); }

5. Generador de cadenas

StringBuilder es una clase auxiliar para construir String s. StringBuilder se introdujo en Java 1.5 como reemplazo de StringBuffer . Es una buena opción para construir cuerdas enormes en un bucle:

public String stringBuilder() { return new StringBuilder() .append("Get busy living") .append(newLine) .append("or") .append(newLine) .append("get busy dying.") .append(newLine) .append("--Stephen King") .toString(); }

6. Escritor de cadenas

StringWriter es otro método que podemos utilizar para crear una cadena de varias líneas. No necesitamos newLine aquí, porque usamos PrintWriter . La función println agrega automáticamente nuevas líneas:

public String stringWriter() { StringWriter stringWriter = new StringWriter(); PrintWriter printWriter = new PrintWriter(stringWriter); printWriter.println("Get busy living"); printWriter.println("or"); printWriter.println("get busy dying."); printWriter.println("--Stephen King"); return stringWriter.toString(); }

7. Guava Joiner

Usar una biblioteca externa solo para una tarea simple como esta no tiene mucho sentido, sin embargo, si el proyecto ya usa la biblioteca para otros propósitos, podemos utilizarla. Por ejemplo, la biblioteca Guava de Google es muy popular. Guava tiene una clase Joiner que puede construir cadenas de varias líneas:

public String guavaJoiner() { return Joiner.on(newLine).join(ImmutableList.of("Get busy living", "or", "get busy dying.", "--Stephen King")); }

8. Carga desde un archivo

Java lee los archivos exactamente como son. Esto significa que si tenemos una cadena de varias líneas en un archivo de texto, tendremos la misma cadena cuando leamos el archivo. Hay muchas formas de leer un archivo en Java.

De hecho, es una buena práctica separar las cadenas largas del código:

public String loadFromFile() throws IOException { return new String(Files.readAllBytes(Paths.get("src/main/resources/stephenking.txt"))); }

9. Uso de funciones IDE

Muchos IDE modernos admiten copiar / pegar varias líneas. Eclipse e IntelliJ IDEA son ejemplos de tales IDE. Simplemente podemos copiar nuestra cadena de varias líneas y pegar dentro de dos comillas dobles en estos IDE.

Obviamente, este método no funciona para la creación de cadenas en tiempo de ejecución, pero es una forma rápida y fácil de obtener una cadena de varias líneas.

10. Conclusión

En este tutorial, aprendimos varios métodos para crear cadenas de varias líneas en Java.

La buena noticia es que Java 13 tendrá soporte nativo para cadenas de varias líneas a través de bloques de texto. No hace falta decir que todos los métodos anteriores seguirán funcionando en Java 13.

El código de todos los métodos de este artículo está disponible en Github.