String.trim() en JavaScript : retirer les espaces autour d'une chaîne

trim rend une nouvelle chaîne sans les espaces de début ni de fin. Ceux du milieu restent, et l'original n'est jamais modifié.
3 min de lecture
Believemy logo

Un utilisateur qui colle son adresse e-mail emmène souvent un espace avec elle. Deux minutes plus tard, la connexion échoue, l'adresse semble pourtant correcte à l'écran, et personne ne comprend.

trim résout cette catégorie entière de problèmes, à condition d'être appelé au bon endroit.


Définition

trim rend une nouvelle String (chaîne de caractères) débarrassée des espaces situés avant le premier caractère visible et après le dernier. Les espaces internes sont conservés, et la chaîne de départ reste intacte.

JAVASCRIPT
const saisie = "  contact@believemy.com  ";

console.log(saisie.length);          // 25
console.log(saisie.trim().length);   // 21
console.log(saisie.trim());          // "contact@believemy.com"

console.log(" a b ".trim());         // "a b", l'espace du milieu reste
Bon à savoir

Comme toute méthode de chaîne, trim ne modifie rien : il faut récupérer sa valeur de retour. Écrire saisie.trim(); seul sur une ligne ne produit aucun effet et aucun message d'erreur, ce qui en fait un oubli difficile à repérer.


Ce que trim retire vraiment

La méthode ne s'arrête pas à l'espace ordinaire. Elle retire tous les caractères d'espacement et tous les sauts de ligne.

  • L'espace ordinaire celui de la barre d'espace.
  • La tabulation écrite \t, fréquente dans les fichiers collés depuis un tableur.
  • Les sauts de ligne \n et \r, qui traînent en fin de ligne de fichier.
  • L'espace insécable le caractère \u00A0, importé par la plupart des copier-coller depuis une page web.
JAVASCRIPT
console.log(JSON.stringify("\n\t Bonjour \r\n".trim()));  // "Bonjour"
console.log(JSON.stringify("\u00A0Bonjour\u00A0".trim()));  // "Bonjour"

Une exception mérite d'être connue : l'espace de largeur nulle \u200B, invisible et pourtant bien présent, n'est pas un caractère d'espacement au sens de la norme. trim ne le retire pas, et une comparaison échoue alors sans raison apparente.


trimStart et trimEnd

Les deux variantes ne traitent qu'un côté. Elles servent surtout à nettoyer des lignes de fichier sans écraser une indentation qui porte du sens.

JAVASCRIPT
const ligne = "   niveau 2   ";

console.log(JSON.stringify(ligne.trimStart()));  // "niveau 2   "
console.log(JSON.stringify(ligne.trimEnd()));    // "   niveau 2"


Questions fréquentes

Question

Où faut-il appeler trim ?

Au plus près de la saisie, juste avant de valider ou d'enregistrer, et sur tous les champs de texte. Le combiner à toLowerCase sur une adresse e-mail évite en prime les doublons de comptes qui ne diffèrent que par une majuscule.


Question

Nettoyer côté navigateur suffit-il ?

Non. Une requête peut arriver sans passer par votre formulaire, depuis un autre client ou un outil de test. Le nettoyage côté navigateur améliore l'expérience, la validation côté serveur reste la seule qui garantisse la donnée enregistrée.


Question

Comment retirer aussi les espaces en double à l'intérieur ?

trim ne touche pas au milieu. Pour normaliser l'ensemble, enchaînez-le avec un String.replace() sur un motif : texte.trim().replace(/\s+/g, " ") ramène toute suite d'espaces, de tabulations ou de sauts de ligne à un espace unique.

Termes connexes

Découvrez notre glossaire JavaScript

Tous les mots de JavaScript expliqués simplement : mots-clés, objets natifs, méthodes, erreurs et concepts. Définitions claires et exemples qui tournent, pour apprendre et pour se dépanner.

Partager cet article

Tu veux nous aider ? Fais un lien vers cet article sur tes réseaux ou encore mieux : sur ton site, dans un article ou dans ta newsletter.