La méthode codePointAt()
renvoie un entier positif qui correspond au code Unicode du caractère de la chaîne à la position donnée.
Syntaxe
str.codePointAt(pos)
Paramètres
pos
- La position de l'élément dans la chaîne de caractères dont on souhaite obtenir la valeur du codet.
Valeur de retour
Un nombre qui représente la valeur du point de code du caractère à la position indiqué. C'est la valeur undefined
qui est renvoyée s'il n'y aucun élément à pos
.
Description
S'il n'y a pas d'élément à la position donnée, la valeur renvoyée sera undefined
. Si ce n'est pas un élément représenté sur deux demi-codets (surrogate pair) UTF-16 et qui commence à pos
, le codet de l'élément à l'indice pos
est renvoyé.
Exemple
Utiliser codepointAt()
'ABC'.codePointAt(1); // 66 '\uD800\uDC00'.codePointAt(0); // 65536 'XYZ'.codePointAt(42); // undefined
Prothèse d'émulation (polyfill)
Le fragment de code suivant permet d'ajouter la méthode codePointAt()
pour les chaînes de caractères (String
). En effet, cette méthode fait partie de ECMAScript 6 et certains navigateurs peuvent ne pas proposer cette fonction nativement.
/*! https://mths.be/codepointat v0.1.0 by @mathias */ if (!String.prototype.codePointAt) { (function() { 'use strict'; // utilisé pour utiliser `apply`/`call` avec `undefined`/`null` var codePointAt = function(position) { if (this == null) { throw TypeError(); } var string = String(this); var size = string.length; // `on transforme en entier` var index = position ? Number(position) : 0; if (index != index) { // mieux que `isNaN` index = 0; } // on regarde si on est en dehors de la chaîne: if (index < 0 || index >= size) { return undefined; } // On récupère le premier codet var first = string.charCodeAt(index); var second; if ( // on vérifie que ce n'est pas le début d'une surrogate pair first >= 0xD800 && first <= 0xDBFF && // high surrogate size > index + 1 // il y a un codet qui suit ) { second = string.charCodeAt(index + 1); if (second >= 0xDC00 && second <= 0xDFFF) { // low surrogate // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000; } } return first; }; if (Object.defineProperty) { Object.defineProperty(String.prototype, 'codePointAt', { 'value': codePointAt, 'configurable': true, 'writable': true }); } else { String.prototype.codePointAt = codePointAt; } }()); }
Spécifications
Spécification | État | Commentaires |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) La définition de 'String.prototype.codePointAt' dans cette spécification. |
Standard | Définition initiale. |
ECMAScript 2017 Draft (ECMA-262) La définition de 'String.prototype.codePointAt' dans cette spécification. |
Projet |
Compatibilité des navigateurs
Fonctionnalité | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Support simple | 41 | 29 (29) | 11 | 28 | Pas de support |
Fonctionnalité | Android | Chrome pour Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Support simple | Pas de support | Pas de support | 29.0 (29) | Pas de support | Pas de support | Pas de support |