Tout ce qui vient de l'extérieur d'un programme arrive en texte. Un champ de formulaire, un paramètre d'URL, une réponse d'API brute : la chaîne de caractères est le format d'entrée par défaut, et savoir la découper proprement fait gagner beaucoup de temps.
Une propriété la distingue de la plupart des autres structures : elle ne se modifie jamais. Chaque méthode renvoie une nouvelle chaîne, ce qui a des conséquences pratiques immédiates.
Définition
Une String est une suite de caractères, écrite entre guillemets simples, doubles ou entre accents graves. Les trois formes produisent le même type, seuls les accents graves autorisent l'interpolation de variables.
const titre = " JavaScript pour le web ";
console.log(titre.length); // 26, espaces compris
console.log(titre.trim()); // "JavaScript pour le web"
console.log(titre.includes("web")); // true
console.log(titre.trim().toUpperCase());
const restant = 3;
console.log(`Il reste ${restant} places`); // "Il reste 3 places"Les méthodes s'enchaînent parce que chacune renvoie une chaîne, ce qui permet de lire une transformation de gauche à droite dans l'ordre où elle se produit.
Les méthodes qui reviennent tous les jours
| Méthode | Ce qu'elle fait |
|---|---|
trim() | Retire les espaces au début et à la fin |
split(separateur) | Découpe en Array (tableau) |
replace(a, b) | Remplace la première occurrence |
slice(debut, fin) | Extrait une portion |
includes(texte) | Répond par oui ou non |
padStart(n, car) | Complète à gauche, utile pour les heures |
console.log("a,b,c".split(",")); // ["a", "b", "c"]
console.log("Bonjour".slice(0, 3)); // "Bon"
console.log("prix : 49".replace("49", "59")); // "prix : 59"
console.log("7".padStart(2, "0")); // "07"replace ne remplace que la première occurrence quand on lui passe du texte. Pour tout remplacer, utilisez replaceAll, ou une expression régulière avec RegExp.
L'immuabilité, et ce qu'elle implique
Une chaîne ne se modifie pas en place. Écrire dans un caractère par son index ne fait rien en mode habituel, et lève une erreur en mode strict, celui des modules.
const mot = "abc";
const autre = mot.replace("a", "z");
console.log(autre); // "zbc"
console.log(mot); // "abc", inchangéLa conséquence pratique est simple : le résultat d'une méthode doit toujours être récupéré. Oublier l'affectation est l'erreur la plus fréquente sur les chaînes, et elle ne produit aucun message.
Questions fréquentes
Guillemets simples, doubles ou accents graves ?
Les simples et les doubles sont strictement équivalents, le choix relève de la convention d'équipe. Les accents graves ajoutent deux capacités réelles : insérer une variable directement dans le texte, et écrire une chaîne sur plusieurs lignes. C'est aujourd'hui la forme la plus utilisée dès qu'il y a une variable à insérer.
Pourquoi "5" + 3 donne-t-il "53" ?
Parce que l'opérateur + concatène dès qu'une des deux valeurs est une chaîne, au lieu d'additionner. Le nombre est converti en texte automatiquement. Ce comportement relève de la Coercition (conversion de type), et la parade consiste à convertir explicitement avec Number (nombre) avant tout calcul.
Pourquoi certains caractères comptent-ils pour deux ?
Parce que length compte des unités de code, pas des caractères visibles. Les émojis et certains symboles occupent deux unités, donc "👍".length vaut 2. Pour compter les caractères réellement affichés, l'astuce est de convertir en tableau avec Spread (...), qui découpe correctement.