Remova TODOS os espaços em branco do texto

590
$("#topNav" + $("#breadCrumb2nd").text().replace(" ", "")).addClass("current");

Este é um trecho do meu código. Quero adicionar uma classe a um ID depois de obter a propriedade de texto de outro ID. O problema é o ID que contém o texto que preciso, contém lacunas entre as letras.

Gostaria que os espaços em branco fossem removidos. Eu tentei TRIM()e REPLACE()mas isso funciona apenas parcialmente. O REPLACE()único remove o 1º espaço.

Cecil Theodore
fonte

Respostas:

1349

Você deve informar o replace () para repetir a regex:

.replace(/ /g,'')

O caractere g significa repetir a pesquisa por toda a sequência. Leia sobre isso e outros modificadores RegEx disponíveis em JavaScript aqui .

Se você deseja combinar todo o espaço em branco, e não apenas o caractere de espaço literal, use \s:

.replace(/\s/g,'')
Flimzy
fonte
30
O Coffeescript reclamará dessa regex por algum motivo terrível. Em vez disso, tive que seguir em frente e usar o .replace(/\s+/g, '')que é totalmente bom para mim.
Dan Bradbury
7
Se você deseja implementar algo como o método string.strip do ruby, que retorna uma cópia da string com o espaço em branco inicial e final removido, isso deve funcionar: x = " Many spaces before and after " y = x.replace(/(^\s+|\s+$)/g, "") O ^\sespaço em branco após o início da string, \s$significa espaço em branco no final do , o |é para / no ou no grupo e o gmodificador é explicado nos comentários acima. Você também precisa de +quantificadores após cada um, \spois deseja capturar uma ou mais instâncias de espaços em branco.
Garrett Simpson
300
.replace(/\s+/, "") 

Substituirá apenas o primeiro espaço em branco , incluindo espaços, tabulações e novas linhas.

Para substituir todo o espaço em branco na cadeia, você precisa usar o modo global

.replace(/\s/g, "")
Pantelis
fonte
11
O primeiro não remove todos os espaços em branco (remove apenas o primeiro grupo de espaço / nova linha / guia), o segundo está OK. demonstração: regex101.com/r/wX8rF2/3
4
.replace (/ \ s + / g, '')
mynameistechno
@mynameistechno A +não acrescenta nada uma vez que já está usando o g(global) modificador
d4nyll
a primeira linha não funcionou como ele di não remover espaços à direita do texto
UKDataGeek
@ d4nyll Pode torná-lo mais eficiente.
Solomon Ucko
5

Usar String.prototype.replacecom regex, como mencionado nas outras respostas, é certamente a melhor solução.

Mas, apenas por diversão, você também pode remover todos os espaços em branco de um texto usando String.prototype.splite String.prototype.join:

const text = ' a b    c d e   f g   ';
const newText = text.split(/\s/).join('');

console.log(newText); // prints abcdefg

Alberto Trindade Tavares
fonte