Les caractères d'une chaîne de caractères sont indexés de la gauche vers la droite. L'indice du premier caractère est 0 et l'indice du dernier caractère d'une chaîne de caractères appelée str est str.length - 1.
Les points de code Unicode vont de 0 à 1114111 (0x10FFFF). charAt() retourne toujours un caractère dont la valeur est inférieure à 65536, car les points de code les plus élevés sont représentés par une paire de pseudo-caractères de substitution de 16 bits. Par conséquent, pour obtenir un caractère complet dont la valeur est supérieure à 65535, il est nécessaire de récupérer non seulement charAt(i), mais aussi charAt(i + 1) (comme si l'on manipule une chaîne de caractères avec deux caractères), ou d'utiliser codePointAt(i) et String.fromCodePoint() à la place. Pour plus d'informations sur Unicode, voir Caractères UTF-16, points de code Unicode et groupes de graphèmes.
charAt() est très similaire à l'utilisation de la notation entre crochets pour accéder à un caractère à l'indice définit. Les principales différences sont :
charAt() tente de convertir index en nombre entier, contrairement à la notation entre crochets, qui utilise directement index comme nom de propriété.
charAt() retourne une chaîne de caractères vide si index est hors de la plage autorisée, tandis que la notation entre crochets retourne undefined.
L'exemple suivant affiche des caractères situés à différents emplacements dans la chaîne de caractères "Un nouveau monde" :
js
const uneChaine = "Un nouveau monde";
console.log(`Le caractère à l'indice 0 est '${uneChaine.charAt()}'`);
// Aucun indice n'a été fourni, 0 est utilisé par défaut
console.log(`Le caractère à l'indice 0 est '${uneChaine.charAt(0)}'`);
console.log(`Le caractère à l'indice 1 est '${uneChaine.charAt(1)}'`);
console.log(`Le caractère à l'indice 2 est '${uneChaine.charAt(2)}'`);
console.log(`Le caractère à l'indice 3 est '${uneChaine.charAt(3)}'`);
console.log(`Le caractère à l'indice 4 est '${uneChaine.charAt(4)}'`);
console.log(`Le caractère à l'indice 999 est '${uneChaine.charAt(999)}'`);
Ces lignes affichent ce qui suit :
Le caractère à l'indice 0 est 'U'
Le caractère à l'indice 0 est 'U'
Le caractère à l'indice 1 est 'n'
Le caractère à l'indice 2 est ' '
Le caractère à l'indice 3 est 'n'
Le caractère à l'indice 4 est 'o'
Le caractère à l'indice 999 est ''
charAt() peut retourner des substituts isolés, qui ne sont pas des caractères Unicode valides.
js
const chaine = "𠮷𠮾";
console.log(chaine.charAt(0)); // "\ud842", qui n'est pas un caractère Unicode valide
console.log(chaine.charAt(1)); // "\udfb7", qui n'est pas un caractère Unicode valide
Pour obtenir le point de code Unicode complet à l'indice donné, utilisez une méthode d'indexation qui divise par points de code Unicode, comme String.prototype.codePointAt() et la propagation des chaînes de caractères dans un tableau de points de code Unicode.
js
const chaine = "𠮷𠮾";
console.log(String.fromCodePoint(chaine.codePointAt(0))); // "𠮷"
console.log([...chaine][0]); // "𠮷"
Note :
Évitez de réimplémenter les solutions ci-dessus en utilisant charAt(). La détection des substituts isolés et leur appariement est complexe, et les API intégrées peuvent être plus performantes, car elles utilisent directement la représentation interne de la chaîne de caractères. Installez une prothèse d'émulation pour les API mentionnées ci-dessus si nécessaire.