Remova os espaços em branco dentro de uma string em javascript

101

Eu li esta pergunta sobre corte de javascript, com uma resposta regex.

Então, espero que o corte remova o espaço interno entre Hello e World.

function myFunction() {
    alert("Hello World ".trim());
}

EDITADO

Por que eu esperava isso !?

Absurdo! Obviamente, o trim não remove os espaços internos !, apenas os que estão à frente e atrás, é assim que o trim funciona, então essa era uma pergunta muito errada, minhas desculpas.

Hernán Eche
fonte
10
trim remove os espaços em branco do início e do final de uma string
Manse
3
O corte remove os espaços em branco antes e depois de uma string. Hello Worldjá está "aparado".
Foguete Hazmat
@limelights para mostrar "HelloWorld" em vez de "Hello World"
Hernán Eche
4
@void: Isso não é "aparar", é um problema diferente.
Rocket Hazmat

Respostas:

236

Para uso de remoção de espaço

"hello world".replace(/\s/g, "");

para todos os espaços em branco use a sugestão da Rocket nos comentários abaixo!

Henrik Andersson
fonte
137
Você pode querer usar .replace(/ /g, '')se houver mais de uma vez.
Rocket Hazmat
@Rocket, isso é absolutamente verdade, só não tenho uma resposta atualizada ainda! Obrigado! :)
Henrik Andersson
47
@Juhana: Se você deseja remover outros espaços em branco também, em seguida, fazer: .replace(/\s/g, '').
Rocket Hazmat
12
@RocketHazmat yes! a resposta correta! embora isso possa ser um pouco mais eficiente: str.replace (/ \ s + / g, '')
jackocnr
3
@PitchiahNatarajan \sirá corresponder a espaços, tabulações e novas linhas.
Rocket Hazmat de
8

Provavelmente porque você se esqueceu de implementar a solução na resposta aceita . Esse é o código que faz trim()funcionar.

atualizar

Essa resposta se aplica apenas a navegadores mais antigos. Aparentemente, os navegadores mais recentes têm suporte trim()nativo.

John Conde
fonte
2
Não necessariamente, alguns navegadores o têm integrado. :-P
Rocket Hazmat
1
Está presente na maioria dos navegadores modernos agora -> kangax.github.com/es5-compat-table
Manse
1

Você pode usar o método de substituição de Strings com uma expressão regular.

"Hello World ".replace(/ /g, "");

O método replace () retorna uma nova string com algumas ou todas as correspondências de um padrão substituídas por uma substituição. O padrão pode ser uma string ou RegExp

RegExp

  • / / - Expressão regular correspondendo a espaços

  • g - Bandeira global; encontre todas as correspondências em vez de parar após a primeira

JSON C11
fonte
1

Você pode usar

"Hello World ".replace(/\s+/g, '');

trim()remove apenas espaços finais na string (primeiro e último na cadeia). Neste caso, esta regExp é mais rápida porque você pode remover um ou mais espaços ao mesmo tempo.

Se você alterar a string vazia de substituição para '$', a diferença se torna muito mais clara:

var string= '  Q  W E   R TY ';
console.log(string.replace(/\s/g, '$'));  // $$Q$$W$E$$$R$TY$
console.log(string.replace(/\s+/g, '#')); // $Q$W$E$R$TY$

Comparação de desempenho - /\s+/gé mais rápido. Veja aqui: http://jsperf.com/s-vs-s

ArlanG
fonte
A resposta atualmente aceita faz a mesma coisa. Apresente alguns testes relevantes indicando que isso é mais rápido do que a resposta em mais do que nanossegundos.
Macaco herege
@HereticMonkey atualizado!
ArlanG