Substituir todos os caracteres de espaço em branco

136

Desejo substituir todas as ocorrências de caracteres de espaço em branco (espaço, guia, nova linha) no JavaScript.
Como fazer isso?

Eu tentei:

str.replace(/ /gi, "X")
Sourav
fonte
1
regular-expressions.info
Felix Kling
1
O que é o "X" e por quê?
Muhammad Shahzad
E quanto a string.replace ('', "X");
Ramesh Rajendran

Respostas:

315

Você quer \s

Corresponde a um único caractere de espaço em branco, incluindo espaço, tabulação, avanço de formulário, avanço de linha.

Equivalente a

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

no Firefox e [ \f\n\r\t\v]no IE .


str = str.replace(/\s/g, "X");
Alex K.
fonte
41
+1 para lembrar de mostrar que a replacefunção não é modificada str; portanto, você deve atribuí-la novamente.
FishBasketGordo
1
Em uma função, você pode retornar str.replace, para não precisar atribuir esse escopo.
Steve K
Lembre-se de usar o R perl = TRUE, comogsub(pattern = "[\\s]+", ..., perl = TRUE)
MS Berends
30

\sé um meta caractere que cobre todo o espaço em branco. Você não precisa fazer distinção entre maiúsculas e minúsculas - o espaço em branco não possui maiúsculas e minúsculas.

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

Também podemos usar isso se quisermos alterar todos os vários espaços em branco unidos com um único caractere:

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

Veja em ação aqui: https://regex101.com/r/d9d53G/1

Explicação

/ \s+/ g

  • \s+corresponde a qualquer caractere de espaço em branco (igual a [\r\n\t\f\v ])
  • + Quantificador - Corresponde entre uma e várias vezes, quantas vezes for possível, devolvendo o que for necessário (ganancioso)

  • Sinalizadores de padrão global
    • modificador g: lobal. Todas as partidas (não retorne após a primeira partida)
Milos Stankovic
fonte
8

Você já experimentou o \s?

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

Se você usar

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

ele substitui todos os espaços em branco. Por exemplo:

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

Tente o seguinte:

str.replace(/\s/g, "X")
Headshota
fonte
Isso não funciona. \s\n\tcorresponde: qualquer caractere de espaço em branco, seguido por uma nova linha, seguida por tab.
Daniel Cassidy
3

Não / gi mas / g

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

"My_Family_File.jpg"
jimver04
fonte
1

Na verdade, tem sido trabalhado, mas

apenas tente isso.

leve o valor / \ s / g para uma variável de string como

String a = /\s/g;

str = str.replaceAll(a,"X");
Siten
fonte
de onde você veio replaceAll?
Ionel Lupu