String. prototype. slice()
Renvoie un fragment de la chaîne entre un indice de départ et un indice de fin (exclu). Prend en charge les indices négatifs.
- Renvoie
- Une nouvelle chaîne contenant le fragment extrait, ou une chaîne vide quand la plage ne contient aucun caractère.
- Modifie l’original
- Non
Exemple
#const title = 'JavaScript en douceur'
console.log(title.slice(0, 10))
console.log(title.slice(11, 13))
console.log(title.slice(-7))
console.log(title)Définition et utilisation
#La méthode slice() découpe un fragment de texte et le renvoie comme nouvelle chaîne. Le premier argument est l’indice de départ, le second l’indice où elle s’arrête, le caractère à cet indice n’étant pas inclus dans le résultat. Sans second argument, le fragment va jusqu’à la fin de la chaîne.
Les indices négatifs se comptent depuis la fin : -1 est le dernier caractère, -3 le troisième en partant de la fin. Cela rend text.slice(-4) très pratique pour récupérer les quatre derniers caractères, par exemple la fin d’un numéro de commande.
La chaîne d’origine ne change pas, car les chaînes en JavaScript sont immuables. Quand le début tombe après la fin, le résultat est une chaîne vide. Dans du code neuf, slice() est en général préférable à substring(), car elle se comporte comme slice() sur les tableaux.
Syntaxe
#string.slice(indexStart)
string.slice(indexStart, indexEnd)Paramètres
#indexStart
number
Indice du premier caractère du fragment. Une valeur négative se compte depuis la fin de la chaîne.indexEnd
number, optionnel
Indice avant lequel le fragment s’arrête (ce caractère n’entre pas dans le résultat). Par défaut, la longueur de la chaîne. Peut être négatif.
Plus d’exemples
#const file = 'projet-final.html'
const extension = file.slice(file.lastIndexOf('.') + 1)
const orderId = 'CMD-2026-004815'
const masked = '*'.repeat(orderId.length - 4) + orderId.slice(-4)
console.log(extension)
console.log(masked)function capitalize(word) {
return word.slice(0, 1).toUpperCase() + word.slice(1)
}
console.log(capitalize('paris'))
console.log(capitalize('javaScript'))Contrairement à word[0], appeler slice(0, 1) sur une chaîne vide renvoie "" au lieu de undefined, donc la fonction ne lèvera pas d’erreur.
const code = 'CSS'
console.log(code.slice(1, 100))
console.log(code.slice(5).length)
console.log(code.slice(2, 1).length)Les indices trop grands sont ramenés à la longueur de la chaîne, et quand le début tombe après la fin, vous obtenez une chaîne vide. slice() n’échange pas ses arguments, contrairement à substring().
Compatibilité des navigateurs
#Largement disponible
Fonctionne dans tous les navigateurs modernes, y compris sur mobile. Vous pouvez l’utiliser sans crainte.
- Chrome
- Edge
- Firefox
- Safari
Bonnes pratiques
#- Pour récupérer les derniers caractères, utilisez un indice négatif :
text.slice(-3)plutôt quetext.slice(text.length - 3). - Rappelez-vous que l’indice de fin n’entre pas dans le résultat. La longueur du fragment est
indexEnd - indexStart. - En découpant un texte avec des emoji, vous pouvez couper un caractère en deux, car les indices comptent des unités UTF-16. Transformez alors la chaîne en tableau de caractères :
[...text].slice(0, 5).join("").
Entrées associées
#- String.prototype.substring()Renvoie un fragment de la chaîne entre deux indices. Convertit les valeurs négatives en 0 et échange les indices inversés.
- String.prototype.at()Renvoie le caractère à l’indice donné. Les indices négatifs se comptent depuis la fin, donc at(-1) est le dernier caractère.
- String.prototype.indexOf()Renvoie l’indice de la première occurrence du texte donné dans une chaîne, ou -1 s’il est absent.
- String.prototype.split()Découpe une chaîne en un tableau de fragments selon un séparateur : un caractère, un texte ou une expression régulière.
- Array.prototype.slice()Renvoie une copie d’une portion du tableau, sans modifier l’original.
Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.