Reemplazar todos los caracteres de espacio en blanco

136

Quiero reemplazar todas las apariciones de caracteres de espacio en blanco (espacio, tabulación, nueva línea) en JavaScript.
¿Cómo hacerlo?

Lo intenté:

str.replace(/ /gi, "X")
Sourav
fuente
1
regular-expressions.info
Felix Kling
1
¿Qué es "X" y por qué?
Muhammad Shahzad
¿Qué pasa con string.replace ('', "X");
Ramesh Rajendran

Respuestas:

315

Usted quiere \s

Coincide con un solo carácter de espacio en blanco, incluyendo espacio, tabulación, avance de formulario, avance de línea

Equivalente a

[ \f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]

en Firefox y [ \f\n\r\t\v]en IE .


str = str.replace(/\s/g, "X");
Alex K.
fuente
41
+1 para recordar mostrar que la replacefunción no se modifica str, por lo que debe asignarla nuevamente.
FishBasketGordo
1
En una función, puede devolver str.replace, por lo que no necesita asignar en ese ámbito.
Steve K
Recuerde que R debe usar perl = TRUE, comogsub(pattern = "[\\s]+", ..., perl = TRUE)
MS Berends
30

\ses un meta personaje que cubre todo el espacio en blanco. No es necesario que no distinga entre mayúsculas y minúsculas: el espacio en blanco no tiene mayúsculas.

str.replace(/\s/g, "X")
Quentin
fuente
19

También podemos usar esto si queremos cambiar todos los espacios en blanco unidos múltiples con un solo carácter:

str.replace(/\s+/g,'X');

Véalo en acción aquí: https://regex101.com/r/d9d53G/1

Explicación

/ \s+/ g

  • \s+coincide con cualquier carácter de espacio en blanco (igual a [\r\n\t\f\v ])
  • + Cuantificador : coincide entre una e ilimitadas veces, tantas veces como sea posible, devolviendo según sea necesario (codicioso)

  • Banderas de patrones globales
    • g modificador: g lobal. Todos los partidos (no volver después del primer partido)
Milos Stankovic
fuente
8

¿Has probado el \s?

str.replace(/\s/g, "X");
Michael Berkowski
fuente
4

Si utiliza

str.replace(/\s/g, "");

reemplaza todos los espacios en blanco. Por ejemplo:

var str = "hello my world";
str.replace(/\s/g, "") //the result will be "hellomyworld"
GigiProve
fuente
4

Prueba esto:

str.replace(/\s/g, "X")
Headshota
fuente
Eso no funciona \s\n\tcoincidencias: cualquier carácter de espacio en blanco, seguido de una nueva línea, seguida de una pestaña.
Daniel Cassidy
3

No / gi pero / g

var fname = "My Family File.jpg"
fname = fname.replace(/ /g,"_");
console.log(fname);

da

"My_Family_File.jpg"
jimver04
fuente
1

En realidad ha sido trabajado pero

solo prueba esto.

tomar el valor / \ s / g en una variable de cadena como

String a = /\s/g;

str = str.replaceAll(a,"X");
Siten
fuente
¿de dónde sacaste replaceAllde?
Ionel Lupu