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 July 2015.
Die charCodeAt()
Methode von String
Werten gibt ein ganzzahliges Ergebnis zwischen 0
und 65535
zurück, das die UTF-16 Code-Einheit am angegebenen Index darstellt.
charCodeAt()
indiziert den String immer als eine Sequenz von UTF-16 Code-Einheiten, sodass es einzelne Surrogate zurückgeben kann. Um den vollständigen Unicode-Codepunkt am angegebenen Index zu erhalten, verwenden Sie String.prototype.codePointAt()
.
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
index
-
Der nullbasierte Index des zu retournierenden Zeichens. Zu einer Ganzzahl konvertiert —
undefined
wird in 0 konvertiert.
Rückgabewert
Ein ganzzahliger Wert zwischen 0
und 65535
, der den UTF-16 Code-Einheitenwert des Zeichens am angegebenen index
repräsentiert. Wenn index
außerhalb des Bereichs von 0
bis str.length - 1
liegt, gibt charCodeAt()
NaN
zurück.
Beschreibung
Zeichen in einem String werden von links nach rechts indiziert. Der Index des ersten Zeichens ist 0
, und der Index des letzten Zeichens in einem String namens str
ist str.length - 1
.
Unicode-Codepunkte reichen von 0
bis 1114111
(0x10FFFF
). charCodeAt()
gibt immer einen Wert zurück, der kleiner als 65536
ist, da höhere Codepunkte durch ein Paar von 16-Bit Surrogat-Pseudo-Zeichen dargestellt werden. Daher ist es notwendig, nicht nur charCodeAt(i)
, sondern auch charCodeAt(i + 1)
abzurufen (als ob man einen String mit zwei Zeichen manipuliert), oder statt dessen codePointAt(i)
zu verwenden. Für Informationen zu Unicode, siehe UTF-16-Zeichen, Unicode-Code-Punkte und Graphem-Cluster.
Beispiele
Verwendung von charCodeAt()
Das folgende Beispiel gibt 65
zurück, den Unicode-Wert für A.
"ABC".charCodeAt(0); // returns 65
charCodeAt()
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 character
console.log(str.charCodeAt(1)); // 57271, or dfb7, which is not a valid Unicode character
Um den vollständigen Unicode-Codepunkt am angegebenen Index zu erhalten, verwenden Sie String.prototype.codePointAt()
.
const str = "𠮷𠮾";
console.log(str.codePointAt(0)); // 134071
Hinweis:
Vermeiden Sie, codePointAt()
mit charCodeAt()
neu zu implementieren. Die Übersetzung von UTF-16 Surrogaten zu Unicode-Codepunkten ist komplex, und codePointAt()
kann effizienter sein, da es direkt die interne Darstellung des Strings verwendet. Installieren Sie ein Polyfill für codePointAt()
, falls nötig.
Unten ist ein mögliches Algorithmus dargestellt, um ein Paar von UTF-16 Code-Einheiten in einen Unicode-Codepunkt zu konvertieren, adaptiert von den Unicode FAQ:
// constants
const 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))); // 134071
console.log(str.codePointAt(0)); // 134071
Spezifikationen
Specification |
---|
ECMAScript® 2025 Language Specification # sec-string.prototype.charcodeat |