Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
String.prototype.charCodeAt()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since Juli 2015.
DiecharCodeAt() Methode vonString-Werten gibt eine ganze Zahl zwischen0 und65535 zurück, die die UTF-16-Code-Einheit an dem angegebenen Index darstellt.
charCodeAt() indexiert den String immer als eine Sequenz vonUTF-16-Code-Einheiten, sodass es möglicherweise einzelne Surrogate zurückgibt. Um den vollständigen Unicode-Codepunkt am angegebenen Index zu erhalten, verwenden SieString.prototype.codePointAt().
In diesem Artikel
Probieren Sie es aus
const sentence = "The quick brown fox jumps over the lazy dog.";const index = 4;console.log( `Character code ${sentence.charCodeAt(index)} is equal to ${sentence.charAt( index, )}`,);// Expected output: "Character code 113 is equal to q"Syntax
charCodeAt(index)Parameter
indexIndex des zurückzugebenden Zeichens, beginnend bei Null.In eine ganze Zahl umgewandelt —
undefinedwird in 0 umgewandelt.
Rückgabewert
Eine ganze Zahl zwischen0 und65535, die den Wert der UTF-16-Code-Einheit des Zeichens am angegebenenindex darstellt. Wennindex außerhalb des Bereichs von0 –str.length - 1 liegt, gibtcharCodeAt()NaN zurück.
Beschreibung
Zeichen in einem String werden von links nach rechts indexiert. 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).charCodeAt() gibt immer einen Wert zurück, der kleiner als65536 ist, da die höheren Codepunkte durchein Paar von 16-Bit-Surrogate-Pseudo-Zeichen dargestellt werden. Daher ist es notwendig, nicht nurcharCodeAt(i), sondern auchcharCodeAt(i + 1) abzurufen (als ob ein String mit zwei Zeichen manipuliert wird), oder stattdessencodePointAt(i) zu verwenden, um ein vollständiges Zeichen mit einem Wert größer als65535 zu erhalten. Weitere Informationen zu Unicode finden Sie unterUTF-16-Zeichen, Unicode-Codepunkte und Graphem-Cluster.
Beispiele
>Verwendung von charCodeAt()
Das folgende Beispiel gibt65 zurück, den Unicode-Wert für A.
"ABC".charCodeAt(0); // returns 65charCodeAt() kann einzelne Surrogate zurückgeben, die keine gültigen Unicode-Zeichen sind.
const str = "𠮷𠮾";console.log(str.charCodeAt(0)); // 55362, or d842, which is not a valid Unicode characterconsole.log(str.charCodeAt(1)); // 57271, or dfb7, which is not a valid Unicode characterUm den vollständigen Unicode-Codepunkt am angegebenen Index zu erhalten, verwenden SieString.prototype.codePointAt().
const str = "𠮷𠮾";console.log(str.codePointAt(0)); // 134071Hinweis:Vermeiden Sie es,codePointAt() mitcharCodeAt() neu zu implementieren. Die Übersetzung von UTF-16-Surrogaten zu Unicode-Codepunkten ist komplex, undcodePointAt() kann performanter sein, da es die interne Darstellung des Strings direkt verwendet. Installieren Sie ein Polyfill fürcodePointAt(), falls notwendig.
Unten ist ein mögliches Algorithmus beschrieben, um ein Paar von UTF-16-Code-Einheiten in einen Unicode-Codepunkt umzuwandeln, adaptiert von derUnicode-FAQ:
// constantsconst LEAD_OFFSET = 0xd800 - (0x10000 >> 10);const SURROGATE_OFFSET = 0x10000 - (0xd800 << 10) - 0xdc00;function utf16ToUnicode(lead, trail) { return (lead << 10) + trail + SURROGATE_OFFSET;}function unicodeToUTF16(codePoint) { const lead = LEAD_OFFSET + (codePoint >> 10); const trail = 0xdc00 + (codePoint & 0x3ff); return [lead, trail];}const str = "𠮷";console.log(utf16ToUnicode(str.charCodeAt(0), str.charCodeAt(1))); // 134071console.log(str.codePointAt(0)); // 134071Spezifikationen
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-string.prototype.charcodeat> |