Supprimer les espaces dans une chaîne en javascript

102

J'ai lu cette question sur javascript trim, avec une réponse regex.

Ensuite, je m'attends à ce que trim supprime l' espace intérieur entre Hello et World.

function myFunction() {
    alert("Hello World ".trim());
}

ÉDITÉ

Pourquoi je m'attendais à ça!?

Absurdité! Évidemment, la coupe ne supprime pas les espaces intérieurs !, seulement les espaces de début et de fin, c'est ainsi que la coupe fonctionne, alors c'était une très mauvaise question, mes excuses.

Hernán Eche
la source
10
trim supprime les espaces du début et de la fin d'une chaîne
Manse
3
Trim supprime les espaces avant et après une chaîne. Hello Worldest déjà "coupé".
Rocket Hazmat
@limelights Pour montrer "HelloWorld" au lieu de "Hello World"
Hernán Eche
4
@void: Ce n'est pas du "rognage", c'est un problème différent.
Rocket Hazmat

Réponses:

238

Pour la suppression des caractères d'espace

"hello world".replace(/\s/g, "");

pour tous les espaces blancs, utilisez la suggestion de Rocket dans les commentaires ci-dessous!

Henrik Andersson
la source
139
Vous voudrez peut-être utiliser .replace(/ /g, '')s'il y a plusieurs espaces.
Rocket Hazmat
@Rocket, c'est absolument vrai, je n'ai pas encore de réponse mise à jour! Merci! :)
Henrik Andersson
47
@Juhana: Si vous voulez supprimer d' autres espaces trop alors faire: .replace(/\s/g, '').
Rocket Hazmat
12
@RocketHazmat oui! la bonne réponse! bien que cela puisse être légèrement plus efficace: str.replace (/ \ s + / g, '')
jackocnr
3
@PitchiahNatarajan \scorrespondra aux espaces, aux tabulations et aux nouvelles lignes.
Rocket Hazmat
8

Probablement parce que vous avez oublié de mettre en œuvre la solution dans la réponse acceptée . C'est le code qui fait trim()fonctionner.

mettre à jour

Cette réponse ne s'applique qu'aux anciens navigateurs. Les navigateurs plus récents prennent apparemment en charge trim()nativement.

John Conde
la source
2
Pas nécessairement, certains navigateurs l'ont intégré. :-P
Rocket Hazmat
1
Son présent dans la plupart des navigateurs modernes maintenant -> kangax.github.com/es5-compat-table
Manse
1

Vous pouvez utiliser la méthode de remplacement de chaînes avec une expression régulière.

"Hello World ".replace(/ /g, "");

La méthode replace () retourne une nouvelle chaîne avec tout ou partie des correspondances d'un modèle remplacées par un remplacement. Le modèle peut être une chaîne ou un RegExp

RegExp

  • / / - Espaces de correspondance d'expression régulière

  • g - Drapeau mondial; trouver tous les matchs plutôt que de s'arrêter après le premier match

JSON C11
la source
1

Vous pouvez utiliser

"Hello World ".replace(/\s+/g, '');

trim()supprime uniquement les espaces de fin de la chaîne (premier et dernier de la chaîne). Dans ce cas, cette regExp est plus rapide car vous pouvez supprimer un ou plusieurs espaces en même temps.

Si vous remplacez la chaîne vide de remplacement par '$', la différence devient beaucoup plus claire:

var string= '  Q  W E   R TY ';
console.log(string.replace(/\s/g, '$'));  // $$Q$$W$E$$$R$TY$
console.log(string.replace(/\s+/g, '#')); // $Q$W$E$R$TY$

Comparaison des performances - /\s+/gest plus rapide. Voir ici: http://jsperf.com/s-vs-s

ArlanG
la source
La réponse actuellement acceptée fait la même chose. Veuillez présenter quelques tests pertinents indiquant que c'est plus rapide que cette réponse de plus de nanosecondes.
Heretic Monkey
@HereticMonkey mis à jour!
ArlanG le