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.

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,'')

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, "")

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.