791 votes

Supprimez TOUS les espaces blancs du texte

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

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

Je voudrais que les espaces blancs soient supprimés. J'ai essayé TRIM() et REPLACE() mais cela ne fonctionne que partiellement. Le site REPLACE() ne supprime que le premier espace.

1780voto

Flimzy Points 9245

Vous devez dire à replace() de répéter la regex :

.replace(/ /g,'')

El g en fait une correspondance "globale", c'est-à-dire qu'elle répète la recherche dans toute la chaîne. Pour en savoir plus à ce sujet et sur les autres modificateurs RegEx disponibles en JavaScript, cliquez ici. aquí .

Si vous voulez faire correspondre tous les espaces, et pas seulement le caractère espace littéral, utilisez \s à la place :

.replace(/\s/g,'')

Vous pouvez également utiliser .replaceAll si vous utilisez une version suffisamment récente de JavaScript, mais il n'y a pas vraiment de raison de le faire pour votre cas d'utilisation spécifique, puisque la capture de tous l'espace blanc nécessite une regex, et lorsque l'on utilise une regex avec .replaceAll il doit être global, donc vous vous retrouvez avec une saisie supplémentaire :

.replaceAll(/\s/g,'')

42 votes

Coffeescript va se plaindre de cette regex pour une raison affreuse. Au lieu de cela, j'ai dû aller de l'avant et utiliser .replace(/\s+/g, '') ce qui me convient parfaitement.

9 votes

Si vous voulez implémenter quelque chose comme la méthode ruby's string.strip, qui renvoie une copie de la chaîne de caractères avec les espaces avant et arrière supprimés, cela devrait fonctionner : x = " Many spaces before and after " y = x.replace(/(^\s+|\s+$)/g, "") Le site ^\s signifie un espace blanc après le début de la chaîne, \s$ signifie qu'il y a un espace blanc à la fin de la chaîne de caractères, l'option | est pour soit / ou dans le dans le groupe, et le g est expliqué dans les commentaires ci-dessus. Vous devez également + les quantificateurs après chaque \s car vous voulez capturer une ou plusieurs instances d'espaces blancs.

358voto

Pantelis Points 2032
.replace(/\s+/, "") 

Remplacera le premier espace seulement 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, "")

13 votes

Le premier n'enlève pas tous espaces blancs (il ne supprime que le premier groupe d'espace/nouvelle ligne/tabulation), le second est OK. démo : regex101.com/r/wX8rF2/3

0 votes

@mynameistechno Le + n'apporte rien puisque nous utilisons déjà la fonction g modificateur (global)

0 votes

La première ligne ne fonctionne pas car elle n'enlève pas les espaces de fin de texte

28voto

camillo777 Points 1534

Vous pouvez maintenant utiliser "replaceAll" :

console.log(' a b    c d e   f g   '.replaceAll(' ',''));

s'imprimera :

abcdefg

Mais ne fonctionne pas dans tous les navigateurs possibles :

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll

2 votes

La demande consiste à remplacer tous les espaces blancs. Cela ne remplace que les espaces littéraux.

3 votes

J'ai également remarqué que le replaceAll s'exécute presque deux fois plus vite que les solutions regex. Cela n'a pas vraiment d'importance, sauf si vous traitez des volumes extrêmement importants, mais il est bon de le savoir.

21voto

ßãlãjî Points 95

Regex pour supprimer les espaces blancs

\s+

var str = "Visit Microsoft!";
var res = str.replace(/\s+/g, "");
console.log(res);

ou

[ ]+

var str = "Visit Microsoft!";
var res = str.replace(/[ ]+/g, "");
console.log(res);

Supprimer tous les espaces blancs au début de la chaîne

^[ ]+

var str = "    Visit Microsoft!";
var res = str.replace(/^[ ]+/g, "");
console.log(res);

supprime tous les espaces blancs à la fin de la chaîne

[ ]+$

var str = "Visit Microsoft!      ";
var res = str.replace(/[ ]+$/g, "");
console.log(res);

10voto

SAKIB Points 71

** 100% fonctionnel

utiliser replace(/ +/g,'_') :

let text = "I     love you"
text = text.replace( / +/g, '_') // replace with underscore ('_')

console.log(text) // I_love_you

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X