¿Cómo eliminar todos los saltos de línea de una string usando JavaScript?

Los saltos de línea en las strings varían de una plataforma a otra, pero los más comunes son los siguientes:

  • Windows: \r\n retorno de carro seguido de carácter de nueva línea.
  • Linux: \n solo un carácter de nueva línea.
  • Mac antiguas: \r solo un carácter de retorno de carro.

Hay dos métodos para realizar esta tarea. Una de las formas es usando el ciclo de programación tradicional y visitando cada personaje uno a la vez. Otro está usando expresiones regulares.

El método de corte y puntada: Es la forma básica de realizar la solución a este problema. Visite cada carácter de la string y córtelos de tal manera que elimine los caracteres de nueva línea y retorno de carro.

Fragmento de código:

var newstr = "";
for( var i = 0; i < str.length; i++ ) 
    if( !(str[i] == '\n' || str[i] == '\r') )
        newstr += str[i];

Todo este fragmento de código simplemente copia todos los caracteres que no son «nueva línea» o «retorno de carro» a otra variable. Sin embargo, hay muchos gastos generales en esta solución y, por lo tanto, no es una forma óptima de eliminar las líneas nuevas.

Expresión regular: este método utiliza expresiones regulares para detectar y reemplazar líneas nuevas en la string. Se introduce en la función de reemplazo junto con la string para reemplazar, que en nuestro caso es una string vacía.

String.replace( regex / substr, replace with )

La expresión regular para cubrir todos los tipos de saltos de línea es

/\r\n|\n|\r/gm

Como puede ver, esta expresión regular ha cubierto todos los casos separados por | operador. Esto se puede reducir a

/[\r\n]+/gm

donde g y m son para banderas globales y multilínea.

Fragmento de código:

function remove_linebreaks( var str ) {
    return str.replace( /[\r\n]+/gm, "" );
}

La mejor parte es que este método funcionó casi 10 veces mejor que el anterior.

Ejemplo:

<!DOCTYPE html>
<html>
  
<head>
    <title>
        Remove all line breaks from
        a string using JavaScript
    </title>
      
    <script>
    // Method 1
      
    // Slice and Stitch
    function remove_linebreaks_ss( str ) {
        var newstr = "";
          
        for( var i = 0; i < str.length; i++ ) 
            if( !(str[i] == '\n' || str[i] == '\r') )
                    newstr += str[i];
                      
        return newstr;
    } 
      
    // Method 2
      
    // Regular Expression
    function remove_linebreaks( str ) {
        return str.replace( /[\r\n]+/gm, "" );
    }
      
    function removeNewLines() {
        var sample_str =
            document.getElementById('raw-text').value;
          
        console.time(); 
          
        // For printing time taken on console.
        document.getElementById('res-1').innerHTML
                = remove_linebreaks_ss( sample_str );
        console.timeEnd();
          
        console.time();
        document.getElementById('res-2').innerHTML
                = remove_linebreaks( sample_str);
        console.timeEnd();
    }
    </script>
</head>
  
<body>
    <center>
        <textarea id="raw-text"></textarea>
        <br>
      
        <button onclick="removeNewLines()">
            Remove Newlines
        </button>
      
        <h6>Method 1:</h6>
        <p id='res-1'></p>
      
        <h6>Method 2:</h6>
        <p id='res-2'></p>
    </center>
</body>
  
</html>                

Producción:

  • Antes de hacer clic en el botón:
  • Después de hacer clic en el botón:

Publicación traducida automáticamente

Artículo escrito por feduser y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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