[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/String/codePointAt [Back]  [Original]

String.prototype.codePointAt() - JavaScript | MDN

Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.

View in English Always switch to English

String.prototype.codePointAt()

Baseline Large disponibilit

Cette fonctionnalit est bien tablie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis septembre 2015.

La mthode codePointAt() renvoie un entier positif qui correspond au code Unicode (code point) du caractre de la chane la position donne.

Dans cet article

Exemple interactif

const icons = "";

console.log(icons.codePointAt(1));
// Expected output: "9733"

Syntaxe

js
str.codePointAt(pos);

Paramtres

pos

La position de l'lment dans la chane de caractres dont on souhaite obtenir la valeur du codet.

Valeur de retour

Un nombre qui reprsente la valeur du point de code du caractre la position indiqu. C'est la valeur undefined qui est renvoye s'il n'y aucun lment pos.

Description

S'il n'y a pas d'lment la position donne, la valeur renvoye sera undefined. Si ce n'est pas un lment reprsent sur deux demi-codets (surrogate pair) UTF-16 et qui commence pos, le codet de l'lment l'indice pos est renvoy.

Exemples

js
"ABC".codePointAt(1); // 66
"\uD800\uDC00".codePointAt(0); // 65536

"XYZ".codePointAt(42); // undefined

Prothse d'mulation (polyfill)

Le fragment de code suivant permet d'ajouter la mthode codePointAt() pour les chanes de caractres (String). En effet, cette mthode fait partie de ECMAScript 2015 et certains navigateurs peuvent ne pas proposer cette fonction nativement.

js
/*! https://mths.be/codepointat v0.2.0 by @mathias */
if (!String.prototype.codePointAt) {
  (function () {
    "use strict"; // needed to support `apply`/`call` with `undefined`/`null`
    var defineProperty = (function () {
      // IE 8 only supports `Object.defineProperty` on DOM elements
      try {
        var object = {};
        var $defineProperty = Object.defineProperty;
        var result = $defineProperty(object, object, object) && $defineProperty;
      } catch (error) {}
      return result;
    })();
    var codePointAt = function (position) {
      if (this == null) {
        throw TypeError();
      }
      var string = String(this);
      var size = string.length;
      // `ToInteger`
      var index = position ? Number(position) : 0;
      if (index != index) {
        // better `isNaN`
        index = 0;
      }
      // Account for out-of-bounds indices:
      if (index < 0 || index >= size) {
        return undefined;
      }
      // Get the first code unit
      var first = string.charCodeAt(index);
      var second;
      if (
        // check if its the start of a surrogate pair
        first >= 0xd800 &&
        first <= 0xdbff && // high surrogate
        size > index + 1 // there is a next code unit
      ) {
        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 (defineProperty) {
      defineProperty(String.prototype, "codePointAt", {
        value: codePointAt,
        configurable: true,
        writable: true,
      });
    } else {
      String.prototype.codePointAt = codePointAt;
    }
  })();
}

Spcifications

Spcification
ECMAScript 2027 LanguageSpecification
# sec-string.prototype.codepointat

Compatibilit des navigateurs

Voir aussi


Web Proxy Viewer  |  New URL  |  Original Page