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: