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 al presionar Enter) de mi texto que ahora usa .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 otra manera?
javascript
regex
string
Wingblade
fuente
fuente
Respuestas:
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 incluyendo 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
RegExp
literal más eficiente para coincidir con todas las variantes esSi desea hacer coincidir todas las líneas nuevas en una cadena, use una coincidencia global,
respectivamente. Luego proceda con el
replace
método como se sugiere en varias otras respuestas. (Probablemente no desee eliminar las nuevas líneas, sino reemplazarlas con otros espacios en blanco, por ejemplo, el carácter de espacio, para que las palabras permanezcan intactas).fuente
\u000a
o\n
, que es un avance de línea;\u000d
o\r
, que es un retorno de carro;\u2028
, un separador de línea; y\u2029
un separador de párrafos. Sin embargo, en la práctica, la expresión regular que publicaste es suficiente en la mayoría de los casos..value
dinámicamente el área de texto, por ejemplotextarea.value = 'a\u2029b'; textarea.value.charAt(1) == '\u2029'; // true
. Pero este es probablemente un caso extremo: como dije, en la mayoría de los casos su expresión regular es suficiente.La forma de encontrar un salto de línea varía entre las codificaciones del sistema operativo. Windows lo sería
\r\n
, pero Linux solo usa\n
y Apple usa\r
.Encontré esto en saltos de línea de JavaScript :
Eso debería eliminar todo tipo de saltos de línea.
fuente
\r\n
e\n
y\r
mejor que sólo/[\n\r]/g
? Seguramente esto es más lento de lo que debería ser, ya que solo necesita verificar cada personaje contra el conjunto de dos opciones posibles.String.trim()
elimina los espacios en blanco desde el principio y el final de las cadenas ... incluidas las nuevas líneas.Aquí hay un ejemplo de violín: http://jsfiddle.net/BLs8u/
¡NOTA! solo recorta el principio y el final de la cadena, no los saltos de línea o los espacios en blanco en el medio de la cadena.
fuente
Puede usar
\n
en una expresión regular para líneas nuevas y\r
para retornos de carro.Los diferentes sistemas operativos utilizan diferentes finales de línea, con diferentes mezclas de
\n
y\r
. Esta expresión regular los reemplazará a todos.fuente
/\n|\r/g
está escrito de manera más eficiente/[\n\r]/g
o incluso/[\n\r]+/g
. Evite la alternancia a menos que lo necesite absolutamente.Si desea eliminar todos los caracteres de control, incluidos CR y LF, puede usar esto:
Eliminará todos los caracteres no imprimibles. Estos son todos los caracteres NOT dentro del espacio HEX ASCII
0x20-0x7E
. Siéntase libre de modificar el rango HEX según sea necesario.fuente
La solución más simple sería:
.replace()
with/\s+/g
regexp está cambiando todos los grupos de caracteres de espacios en blanco a un solo espacio en toda la cadena, luego.trim()
el resultado es eliminar todos los espacios en blanco excedentes 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]
fuente
str = str.replace(/\s+/g, ' ').trim();
fuente
Para eliminar nuevos caracteres de línea, use esto:
Luego puede recortar su cadena para eliminar los espacios iniciales y finales:
fuente
La respuesta proporcionada por PointedEars es todo lo que la mayoría de nosotros necesitamos. Pero siguiendo la respuesta de Mathias Bynens, realicé un viaje a 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 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 rendimiento, puede que no lo sea, pero para una herramienta rápida que haga el trabajo en cualquier caso, esto debería ser útil.
fuente
\R
"todos" los avances de línea. En segundo lugar, por qué no simplementesomeString.replace(new RegExp(lineTerminators.join('|')), '');
replace()
por lolineTerminators
que existía en la cadena por razones de rendimiento.Un salto de línea en la expresión regular es \ n, por lo que su secuencia de comandos sería
fuente
Estoy agregando mi respuesta, es solo un complemento de lo anterior, ya que para mí probé todas las opciones / n y no funcionó, vi que mi texto proviene del servidor con doble barra, así que utilicé esto:
fuente
UTILICE ESTA FUNCIÓN A CONTINUACIÓN Y HAGA SU VIDA FÁCIL
El enfoque más fácil es usar expresiones regulares para detectar y reemplazar nuevas líneas en la cadena. En este caso, usamos la función de reemplazo junto con una cadena para reemplazar, que en nuestro caso es una cadena vacía.
En la expresión anterior, g y m son para indicadores globales y multilínea
fuente
Prueba el siguiente código. Funciona en todas las plataformas.
fuente
En mac, solo use
\n
en regexp para hacer coincidir los saltos de línea. Entonces el código serástring.replace(/\n/g, '')
, ps: la g seguida significa que coinciden con todos en lugar de solo el primero.En Windows, lo será
\r\n
.fuente