Baseline Widely available
Die charCodeAt()
Methode von String
-Werten gibt eine ganze Zahl zwischen 0
und 65535
zurück, die die UTF-16-Code-Einheit an dem angegebenen Index darstellt.
charCodeAt()
indexiert den String immer als eine Sequenz von UTF-16-Code-Einheiten, sodass es möglicherweise einzelne Surrogate zurückgibt. Um den vollständigen Unicode-Codepunkt am angegebenen Index zu erhalten, verwenden Sie String.prototype.codePointAt()
.
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 Parameter
index
Index des zurückzugebenden Zeichens, beginnend bei Null. In eine ganze Zahl umgewandelt â undefined
wird in 0 umgewandelt.
Eine ganze Zahl zwischen 0
und 65535
, die den Wert der UTF-16-Code-Einheit des Zeichens am angegebenen index
darstellt. Wenn index
auÃerhalb des Bereichs von 0
â str.length - 1
liegt, gibt charCodeAt()
NaN
zurück.
Zeichen in einem String werden von links nach rechts indexiert. 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 die höheren Codepunkte durch ein Paar von 16-Bit-Surrogate-Pseudo-Zeichen dargestellt werden. Daher ist es notwendig, nicht nur charCodeAt(i)
, sondern auch charCodeAt(i + 1)
abzurufen (als ob ein String mit zwei Zeichen manipuliert wird), oder stattdessen codePointAt(i)
zu verwenden, um ein vollständiges Zeichen mit einem Wert gröÃer als 65535
zu erhalten. Weitere Informationen zu Unicode finden Sie unter UTF-16-Zeichen, Unicode-Codepunkte und Graphem-Cluster.
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 es, codePointAt()
mit charCodeAt()
neu zu implementieren. Die Ãbersetzung von UTF-16-Surrogaten zu Unicode-Codepunkten ist komplex, und codePointAt()
kann performanter sein, da es die interne Darstellung des Strings direkt verwendet. Installieren Sie ein Polyfill für codePointAt()
, falls notwendig.
Unten ist ein mögliches Algorithmus beschrieben, um ein Paar von UTF-16-Code-Einheiten in einen Unicode-Codepunkt umzuwandeln, adaptiert von der 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 Browser-Kompatibilität Siehe auch
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4