Javascript – Comment supprimer tous les espaces supplémentaires entre les mots

Comment puis-je supprimer tout espace supplémentaire entre les mots dans un littéral de chaîne?

"some value" 

Devraient devenir

 "some value" 

Aussi,

 " This should become something else too . " 

Devient

 "This should become something else too ." 

Ne vous inquiétez pas de déplacer le . . Tout comme ci-dessus est bien. Je sais que je peux utiliser $.trim(str) pour obtenir l'élimination de l'espace de fin de course / fin. Mais, je ne suis pas sûr de savoir comment faire 1 espace entre les mots.

 var string = " This should become something else too . "; string = string.replace(/\s+/g, " "); 

Ce code remplace un ensemble consécutif de caractères d'espace blanc ( \s+ ) par un espace blanc unique. Notez qu'un personnage blanc-espace inclut également l'onglet et les nouvelles lignes. Remplacez \s par un espace si vous souhaitez seulement remplacer des espaces.

Si vous souhaitez également supprimer les espaces au début et à la fin, incluez:

 string = string.replace(/^\s+|\s+$/g, ""); 

Cette ligne supprime tous les caractères blancs au début ( ^ ) et fin ( $ ). Le g à la fin du RegExp signifie: global, c.-à-d. Combiner et remplacer toutes les occurrences.

 var str = " This should become something else too . "; str = str.replace(/ +(?= )/g,''); 

Voici un violon de travail .

JsFiddle Example

 " This should become something else too . ".replace(/[\s\t]+/g,' '); 
 var str = " This should become something else too . " $.trim(str).replace(/\s(?=\s)/g,'') 

Cela utilise lookahead pour remplacer plusieurs espaces par un espace unique.

Un autre (peut-être plus facile à comprendre) regexp remplacement qui fera l'affaire:

 var input = /* whatever */; input = input.replace(/ +/g, ' '); 

Le regexp correspond à un ou plusieurs espaces, de sorte que l'appel .replace() remplace chaque espace unique ou répété par un espace unique.

 var str = 'some value'; str.replace(/\s\s+/g, ' ');