Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
String.prototype.codePointAt()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.
DiecodePointAt()-Methode vonString Werten gibt eine nicht negative Ganzzahl zurück, die der Unicode-Codepunktwert des Zeichens ist, das an dem angegebenen Index beginnt. Beachten Sie, dass der Index immer noch auf UTF-16-Codeeinheiten basiert, nicht auf Unicode-Codepunkten.
In diesem Artikel
Probieren Sie es aus
const icons = "☃★♲";console.log(icons.codePointAt(1));// Expected output: "9733"Syntax
codePointAt(index)Parameter
indexNullbasierter Index des zurückzugebenden Zeichens.In eine Ganzzahl konvertiert —
undefinedwird in 0 konvertiert.
Rückgabewert
Eine nicht negative Ganzzahl, die den Codepunktwert des Zeichens an der angegebenenindex repräsentiert.
- Wenn
indexaußerhalb des Bereichs von0–str.length - 1liegt, gibtcodePointAt()undefinedzurück. - Wenn das Element am
indexein UTF-16 führendes Surrogat ist, gibt es den Codepunkt des Surrogatpaars zurück. - Wenn das Element am
indexein UTF-16 nachfolgendes Surrogat ist, gibt es nur die nachfolgende Surrogat-Codeeinheit zurück.
Beschreibung
Zeichen in einem String sind von links nach rechts indiziert. Der Index des ersten Zeichens ist0, und der Index des letzten Zeichens in einem String namensstr iststr.length - 1.
Unicode-Codepunkte reichen von0 bis1114111 (0x10FFFF). In UTF-16 ist jeder String-Index eine Codeeinheit mit dem Wert0 –65535. Höhere Codepunkte werden durch ein Paar von 16-Bit-Surrogat-Pseudo-Zeichen dargestellt. Daher gibtcodePointAt() einen Codepunkt zurück, der sich möglicherweise über zwei String-Indizes erstreckt. Für Informationen zu Unicode, sieheUTF-16-Zeichen, Unicode-Codepunkte und Grapheme-Cluster.
Beispiele
>Verwendung von codePointAt()
"ABC".codePointAt(0); // 65"ABC".codePointAt(0).toString(16); // 41"😍".codePointAt(0); // 128525"\ud83d\ude0d".codePointAt(0); // 128525"\ud83d\ude0d".codePointAt(0).toString(16); // 1f60d"😍".codePointAt(1); // 56845"\ud83d\ude0d".codePointAt(1); // 56845"\ud83d\ude0d".codePointAt(1).toString(16); // de0d"ABC".codePointAt(42); // undefinedSchleifen mit codePointAt()
Da die Verwendung von String-Indizes für Schleifen dazu führt, dass derselbe Codepunkt zweimal besucht wird (einmal für das führende Surrogat, einmal für das nachfolgende Surrogat), und beim zweiten Mal gibtcodePointAt() nur das nachfolgende Surrogat zurück, ist es besser, Schleifen nach Index zu vermeiden.
const str = "\ud83d\udc0e\ud83d\udc71\u2764";for (let i = 0; i < str.length; i++) { console.log(str.codePointAt(i).toString(16));}// '1f40e', 'dc0e', '1f471', 'dc71', '2764'Verwenden Sie stattdessen einefor...of-Anweisung oderspreaden Sie den String, die beide den String's[Symbol.iterator]() aufrufen, der nach Codepunkten iteriert. Verwenden Sie danncodePointAt(0), um den Codepunkt jedes Elements zu erhalten.
for (const codePoint of str) { console.log(codePoint.codePointAt(0).toString(16));}// '1f40e', '1f471', '2764'[...str].map((cp) => cp.codePointAt(0).toString(16));// ['1f40e', '1f471', '2764']Spezifikationen
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-string.prototype.codepointat> |