He cadena como esta

"hello
java
book"

Quiero quitar \r y \n de cadena(hola\r\njava\r\nbook). Quiero una cadena como «hellojavabook». ¿Cómo puedo hacer esto?

  • StringUtils.chomp()
InformationsquelleAutor | 2009-02-27

9 Comentarios

  1. 122

    Regex con replaceAll.

    public class Main
    {
        public static void main(final String[] argv) 
        {
            String str;
    
            str = "hello\r\njava\r\nbook";
            str = str.replaceAll("(\r|\n)", "");
            System.out.println(str);
        }
    }

    Si sólo desea quitar \r\n cuando son pares (el código anterior se elimina cualquiera de los \r y \n) hacer esto en su lugar:

    str = str.replaceAll("\r\n", "");
    • Yo recomendaría que usted utiliza System.getProperty("line.separator");, en lugar de codificado interruptores de línea. Cada sistema operativo tiene su propia línea de separación.
    • A mí también, pero la pregunta utilizó específicamente la \r y \n…
    • a veces la Cadena de texto / Archivo no fue hecho por el mismo sistema operativo. Así System.getProperty("line.separator"); no funcionan en estos casos. Pero sí, si se puede confiar en las mismas-OS origen, es mejor utilizar el sistema de propiedad.
    • ¿Cómo se utiliza el valor devuelto por line.separator? Traté de pasar "\\" + lineSeparator en el regex, y no funcionó
  2. 15

    Si quieres evitar las regex, o debe destino anterior JVM, Cadena.replace() va a hacer:

    str=str.replace("\r","").replace("\n","");

    Y para quitar un CRLF par:

    str=str.replace("\r\n","");

    El último es más eficiente que la construcción de un regex para hacer la misma cosa. Pero creo que el primero es más rápido como una expresión regular ya que la cadena es sólo analiza una vez.

  3. 12
    public static void main(final String[] argv) 
    {
        String str;
    
        str = "hello\r\n\tjava\r\nbook";
        str = str.replaceAll("(\r|\n|\t)", "");
        System.out.println(str);
    }

    Sería útil añadir la tabulación en regex demasiado.

  4. 4

    Dado un String str:

    str = str.replaceAll("\\r","")
    str = str.replaceAll("\\n","")
    • Zounds. Me pegaba a él!
    • Este es un innecesariamente ineficiente manera de hacerlo.
  5. 1
    static byte[] discardWhitespace(byte[] data) {
        byte groomedData[] = new byte[data.length];
        int bytesCopied = 0;
    
        for (int i = 0; i < data.length; i++) {
            switch (data[i]) {
                case (byte) '\n' :
                case (byte) '\r' :
                    break;
                default:
                    groomedData[bytesCopied++] = data[i];
            }
        }
    
        byte packedData[] = new byte[bytesCopied];
    
        System.arraycopy(groomedData, 0, packedData, 0, bytesCopied);
    
        return packedData;
    }

    Código que se encuentra en commons-codec proyecto.

  6. 1

    Puede utilizar unescapeJava de org.apache.commons.text.StringEscapeUtils como el de abajo,

    str = "hello\r\njava\r\nbook";
    StringEscapeUtils.unescapeJava(str);
    • Esta es obsoleto
  7. 0

    Puede pasar directamente terminador de línea por ejemplo, \n, si usted sabe el terminador de línea en Windows, Mac o UNIX. Alternativamente, usted puede utilizar el código siguiente para sustituir los saltos de línea en cualquiera de los tres principales del sistema operativo.

    str = str.replaceAll("\r\n|\r|\n", " ");

    Por encima de la línea de código reemplazará los saltos de línea con el espacio en Mac, Windows y Linux.
    También puede utilizar la línea de separador. Va a trabajar para todos los SO. A continuación es el fragmento de código para la línea de separador.

    String lineSeparator=System.lineSeparator();
    String newString=yourString.replace(lineSeparator, "");
  8. -6

    Intenta

    string.trim(); 

    Esto es para recortar todos los líderes y se inclina, mientras que los espacios en la cadena. Espero que esto ayude.

    Edición: (yo no era suficientemente explícito)

    Así, cuando la cadena.split(), usted tendrá un string[] – para cada una de las cadenas de la matriz, hacer una cadena.trim() y, a continuación, agregarlo.

    String[] tokens = yourString.split(" ");
    StringBuffer buff = new StringBuffer();
    for (String token : tokens)
    {
      buff.append(token.trim());
    }

    Uso stringBuffer/Generador en lugar de anexar en la misma cadena.

    • ¿Cuál es el problema aquí? Recorte se lleva todo y le da la espalda a la cadena?
    • Trim elimina de avance y retroceso en el espacio en blanco. Los saltos de línea en el medio de una cadena que no se pueden eliminar.

Dejar respuesta

Please enter your comment!
Please enter your name here