javascript - test - ¿Cómo eliminar todos los saltos de línea de una cadena?
regexp javascript (12)
Cómo encontraría un salto de línea varía entre las codificaciones del sistema operativo. Windows sería /r/n/t
pero Linux solo usa /n
Apple usa /r
.
Encontré esto en los saltos de línea javascript
someText = someText.replace(/(/r/n/t|/n|/r/t)/gm,"");
Eso debería eliminar todo tipo de saltos de línea.
Tengo un texto en un área de texto y lo leí usando el atributo .value. Ahora me gustaría eliminar todos los saltos de línea (el carácter que se produce cuando presionas Intro) de mi texto ahora usando .replace con una expresión regular, pero ¿cómo indico un salto de línea en una expresión regular? Si eso no es posible, ¿hay alguna otra manera?
La respuesta proporcionada por PointedEars es todo lo que la mayoría de nosotros necesita. Pero siguiendo la respuesta de Mathias Bynens, fui a un viaje de Wikipedia y encontré esto: https://en.wikipedia.org/wiki/Newline .
La siguiente es una función desplegable que implementa todo lo que la página de Wiki anterior considera "nueva línea" en el momento de esta respuesta.
Si algo no se ajusta a su caso, simplemente retírelo. Además, si está buscando un rendimiento, esto podría no serlo, pero en cualquier caso, una herramienta rápida que haga el trabajo debería ser útil.
// replaces all "new line" characters contained in `someString` with the given `replacementString`
const replaceNewLineChars = ((someString, replacementString = ``) => { // defaults to just removing
const LF = `/u{000a}`; // Line Feed (/n)
const VT = `/u{000b}`; // Vertical Tab
const FF = `/u{000c}`; // Form Feed
const CR = `/u{000d}`; // Carriage Return (/r)
const CRLF = `${CR}${LF}`; // (/r/n)
const NEL = `/u{0085}`; // Next Line
const LS = `/u{2028}`; // Line Separator
const PS = `/u{2029}`; // Paragraph Separator
const lineTerminators = [LF, VT, FF, CR, CRLF, NEL, LS, PS]; // all Unicode `lineTerminators`
let finalString = someString.normalize(`NFD`); // better safe than sorry? Or is it?
for (let lineTerminator of lineTerminators) {
if (finalString.includes(lineTerminator)) { // check if the string contains the current `lineTerminator`
let regex = new RegExp(lineTerminator.normalize(`NFD`), `gu`); // create the `regex` for the current `lineTerminator`
finalString = finalString.replace(regex, replacementString); // perform the replacement
};
};
return finalString.normalize(`NFC`); // return the `finalString` (without any Unicode `lineTerminators`)
});
La solución más simple sería:
let str = ''/t/n/r this /n /t /r is /r a /n test /t /r /n'';
str.replace(//s+/g, '' '').trim();
console.log(str); // logs: "this is a test"
.replace()
con //s+/g
regexp está cambiando todos los grupos de caracteres de espacios en blanco a un solo espacio en toda la cadena y luego .trim()
el resultado para eliminar todos los espacios en blanco anteriores antes y después del texto.
Se consideran caracteres de espacios en blanco:
[ /f/n/r/t/v/u00a0/u1680/u2000-/u200a/u2028/u2029/u202f/u205f/u3000/ufeff]
Otro truco, si quieres obtener números, es usar parseFloat()
o parseInt()
y te devolverá un buen número
Para eliminar nuevos caracteres de línea usa eso:
yourString.replace(//r?/n?/g, '''')
Luego puedes recortar la cuerda para eliminar los espacios iniciales y finales:
yourString.trim()
Prueba este código, funciona en todas las plataformas:
var break_for_winDOS = ''test/r/nwith/r/nline/r/nbreaks'';
var break_for_linux = ''test/nwith/nline/nbreaks'';
var break_for_older_mac = ''test/rwith/rline/rbreaks'';
break_for_winDOS.replace(/(/r?/n|/r)/gm, '' '');
//output
''test with line breaks''
break_for_linux.replace(/(/r?/n|/r)/gm, '' '');
//output
''test with line breaks''
break_for_older_mac.replace(/(/r?/n|/r)/gm, '' '');
//output
''test with line breaks''
Puede usar /n
en una expresión regular para nuevas líneas y /r
para retornos de carro.
var str2 = str.replace(//n|/r/g, "");
Los diferentes sistemas operativos utilizan diferentes finales de línea, con mezclas variables de /n
/r
. Esta expresión regular los reemplazará a todos.
Si desea eliminar todos los caracteres de control, incluidos CR y LF, puede utilizar esto:
myString.replace(/[^/x20-/x7E]/gmi, "")
Se eliminarán todos los caracteres no imprimibles. Estos son todos los caracteres que NO están dentro del espacio ASCII HEX 0x20-0x7E
. Siéntase libre de modificar el rango HEX según sea necesario.
Un salto de línea en expresiones regulares es / n, por lo que su script sería
var test = ''this/nis/na/ntest/nwith/newlines'';
console.log(test.replace(//n/g, '' ''));
String.trim()
elimina los espacios en blanco desde el principio y el final de las cadenas ... incluidas las nuevas líneas.
const myString = " /n /n/n Hey! /n I''m a string!!! /n/n";
const trimmedString = myString.trim();
console.log(trimmedString);
// outputs: "Hey! /n I''m a string!!!"
Aquí hay un ejemplo de violín: http://jsfiddle.net/BLs8u/
¡NOTA! solo recorta el principio y el final de la cadena, no saltos de línea o espacios en blanco en el medio de la cadena.
Esta es probablemente una pregunta frecuente. De todos modos, los saltos de línea (mejor: nuevas líneas) pueden ser uno de Retorno de carro (CR, /r
, en Macs más antiguos), Avance de línea (LF, /n
, en Unices incl. Linux) o CR seguido de LF ( /r/n
, en WinDOS). (Contrariamente a otra respuesta, esto no tiene nada que ver con la codificación de caracteres).
Por lo tanto, el literal RegExp
más eficiente para que coincida con todas las variantes es
//r?/n|/r/
Si desea hacer coincidir todas las nuevas líneas en una cadena, utilice una coincidencia global,
//r?/n|/r/g
respectivamente. Luego proceda con el método de replace
como se sugiere en varias otras respuestas. (Probablemente no desee eliminar las nuevas líneas, pero reemplácelas con otros espacios en blanco, por ejemplo, el carácter de espacio, para que las palabras permanezcan intactas).
var str = "bar/r/nbaz/nfoo";
str.replace(/[/r/n]/g, '''');
>> "barbazfoo"