2010-07-20 5 views

Répondre

107

Vous pouvez utiliser une expression régulière remplacerons:

str = str.replace(/ +(?=)/g,''); 

Crédit: Le regex ci-dessus a été prise de Regex to replace multiple spaces with a single space

+30

Cela fonctionne aussi. s = s.replace (/ +/g, ""); – InfinitiesLoop

+0

Très vrai :) --insert plus de caractères-- – Josiah

+0

'str = '' + str.replace (/ + (? =)/G, '')' est une meilleure solution au cas où votre str est 'indéfini' ou' NaN' :) – Val

31

Il y a beaucoup d'options pour les expressions régulières que vous pouvez utiliser pour y parvenir. Un exemple qui performent bien est:

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

Voir cette question pour une discussion approfondie sur ce problème exact: Regex to replace multiple spaces with a single space

+0

merci c'est la seule regex celui qui a fonctionné pour moi –

+0

C'est le seul que j'ai essayé et cela a fonctionné pour mon cas. –

3

Vous pouvez également remplacer sans une expression régulière.

while(str.indexOf(' ')!=-1)str.replace(' ',' '); 
+1

Fonctionne aussi ... La question est: qui est le plus efficace? Cette version ou la version regex. J'ai une préférence pour regex car nous ne pratiquons jamais assez. –

+0

Je ne sais pas - si vous n'avez aucune correspondance, cette méthode est plus efficace. Si vous avez beaucoup de matches, quelqu'un se trompe. – kennebec

+0

Voici [un violon] (http://jsfiddle.net/NickT/ScJKw/1/) qui, j'espère, souligne la différence. Il affiche clairement que les expressions régulières sont, dans tous les cas, au moins aussi rapides que les versions en boucle. Ne pas dire que la version en boucle est mauvaise, en soulignant simplement qu'il faut toujours tenir compte de la maintenabilité et de l'évolution du produit. –

18

vous tous oublier quantificateurs n {X,} http://www.w3schools.com/jsref/jsref_regexp_nxcomma.asp

ici la meilleure solution

str = str.replace(/\s{2,}/g, ' '); 
+0

Vous pouvez également citer le site Web [Regular Expression] (http://www.regular-expressions.info/) pour toutes sortes de saveurs regex et références complètes. –

+1

Quelle est l'amélioration de l'utilisation du quantificateur de parenthèses sur un + simple? –

+0

@ utilisateur non-descripteur '/ \ s +/g' remplace aussi les espaces simples (cela n'est pas nécessaire) mais'/\ s \ s +/g' ou '/ \ s {2,}/g' remplacez seulement plusieurs espaces. –

Questions connexes