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.
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 resteComme 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
\net\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.
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.
const ligne = " niveau 2 ";
console.log(JSON.stringify(ligne.trimStart())); // "niveau 2 "
console.log(JSON.stringify(ligne.trimEnd())); // " niveau 2"Questions fréquentes
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.
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.
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.