Saltar al contenido

¿Cómo eliminar saltos de línea de un archivo en Java?

El tutorial o código que encontrarás en este post es la resolución más eficiente y efectiva que hallamos a tus dudas o dilema.

Solución:

Necesitas configurar text a los resultados de text.replace():

String text = readFileAsString("textfile.txt");
text = text.replace("n", "").replace("r", "");

Esto es necesario porque las cadenas son inmutables, llamando replace no cambia el String original, devuelve uno nuevo que ha sido modificado. Si no asigna el resultado a textentonces ese nuevo String se pierde y se recolecta la basura.

En cuanto a obtener la cadena de nueva línea para cualquier entorno, está disponible llamando System.getProperty("line.separator").

Como se señaló en otras respuestas, su código no funciona ante todo porque String.replace(...) no cambia el objetivo String. (¡No puede, las cadenas de Java son inmutables!) ¿Qué replace lo que realmente hace es crear y devolver un nuevo String objeto con los caracteres cambiados según sea necesario. Pero tu código luego tira eso String


Aquí hay algunas posibles soluciones. Cuál es el más correcto depende de qué es exactamente lo que está tratando de hacer.

// #1
text = text.replace("n", "");

Simplemente elimina todos los caracteres de nueva línea. Esto no hace frente a las terminaciones de línea de Windows o Mac.

// #2
text = text.replace(System.getProperty("line.separator"), "");

Elimina todos los terminadores de línea para la plataforma actual. Esto no soluciona el caso en el que intenta procesar (por ejemplo) un archivo UNIX en Windows, o viceversa.

// #3
text = text.replaceAll("\r|\n", "");

Elimina todos los terminadores de línea de Windows, UNIX o Mac. Sin embargo, si el archivo de entrada es texto, este concatenará palabras; p.ej

Goodbye cruel
world.

se convierte

Goodbye cruelworld.

Así que es posible que desee hacer esto:

// #4
text = text.replaceAll("\r\n|\r|\n", " ");

que reemplaza cada terminador de línea con un espacio1. Desde Java 8 también puedes hacer esto:

// #5
text = text.replaceAll("\R", " ");

Y si desea reemplazar el terminador de línea múltiple con un espacio:

// #6
text = text.replaceAll("\R+", " ");

1 – Tenga en cuenta que hay una sutil diferencia entre el n.º 3 y el n.º 4. La secuencia rn representa un único terminador de línea (Windows), por lo que debemos tener cuidado de no reemplazarlo con dos espacios.

Esta función normaliza todos los espacios en blanco, incluidos los saltos de línea, a espacios individuales. No es exactamente lo que pedía la pregunta original, pero es probable que haga exactamente lo que se necesita en muchos casos:

import org.apache.commons.lang3.StringUtils;

final String cleansedString = StringUtils.normalizeSpace(rawString);

Reseñas y puntuaciones del artículo

Si conservas alguna sospecha y disposición de ascender nuestro tutorial puedes añadir una crítica y con gusto lo ojearemos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *