Supprimer TOUS les espaces blancs du texte

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

Ceci est un extrait de mon code. Je veux ajouter une classe à un ID après avoir obtenu la propriété de texte d'un autre ID. Le problème, c'est que l'ID contenant le texte dont j'ai besoin contient des espaces entre les lettres.

J'aimerais que les espaces blancs soient supprimés. J'ai essayé TRIM()et REPLACE()cela ne fonctionne que partiellement. Le REPLACE()seul supprime le 1er espace.

Cecil Theodore
la source

Réponses:

1351

Vous devez dire à replace () de répéter l'expression régulière:

.replace(/ /g,'')

Le caractère g signifie répéter la recherche dans toute la chaîne. Lisez à ce sujet et d'autres modificateurs RegEx disponibles en JavaScript ici .

Si vous souhaitez faire correspondre tous les espaces, et pas seulement le caractère d'espace littéral, utilisez \splutôt:

.replace(/\s/g,'')
Flimzy
la source
31
Coffeescript se plaindra de ce regex pour une terrible raison. Au lieu de cela, j'ai dû aller de l'avant et utiliser .replace(/\s+/g, '')ce qui est tout à fait correct pour moi.
Dan Bradbury
7
Si vous souhaitez implémenter quelque chose comme la méthode string.strip de ruby, qui retourne renvoie une copie de la chaîne avec les espaces de début et de fin supprimés, cela devrait fonctionner: x = " Many spaces before and after " y = x.replace(/(^\s+|\s+$)/g, "") les ^\sespaces blancs après le début de la chaîne, les \s$espaces blancs à la fin de la chaîne, l' |est pour / ou dans le groupe et le gmodificateur est expliqué dans les commentaires ci-dessus. Vous avez également besoin de +quantificateurs après chacun, \scar vous souhaitez capturer une ou plusieurs instances d'espaces blancs.
Garrett Simpson
300
.replace(/\s+/, "") 

Remplacera uniquement le premier espace blanc , cela inclut les espaces, les tabulations et les nouvelles lignes.

Pour remplacer tous les espaces dans la chaîne, vous devez utiliser le mode global

.replace(/\s/g, "")
Pantelis
la source
11
Le premier ne supprime pas tous les espaces blancs (il supprime uniquement le premier groupe d'espace / nouvelle ligne / tabulation), le 2ème est OK. démo: regex101.com/r/wX8rF2/3
4
.replace (/ \ s + / g, '')
mynameistechno
@mynameistechno Le +n'ajoute rien car nous utilisons déjà le gmodificateur (global)
d4nyll
la première ligne n'a pas fonctionné car elle ne supprime pas les espaces de fin du texte
UKDataGeek
@ d4nyll Cela pourrait le rendre plus efficace.
Solomon Ucko
5

L'utilisation String.prototype.replaceavec regex, comme mentionné dans les autres réponses, est certainement la meilleure solution.

Mais, juste pour le plaisir, vous pouvez également supprimer tous les espaces blancs d'un texte en utilisant String.prototype.splitet 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
la source