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