String.prototype.codePointAt()

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.

/*! http://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
					// http://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 10
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 10

Voir aussi

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : SphinxKnight
 Dernière mise à jour par : SphinxKnight,