String.prototype.charAt()
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 charAt() Methode von String Werten gibt einen neuen String zurück, der aus der einzelnen UTF-16 Codeeinheit am angegebenen Index besteht.
charAt() indiziert den String immer als eine Folge von UTF-16 Codeeinheiten, sodass es einzelne Surrogate zurückgeben kann. Um den vollständigen Unicode-Codepunkt am angegebenen Index zu erhalten, verwenden Sie String.prototype.codePointAt() und String.fromCodePoint().
Probieren Sie es aus
const sentence = "The quick brown fox jumps over the lazy dog.";
const index = 4;
console.log(`The character at index ${index} is ${sentence.charAt(index)}`);
// Expected output: "The character at index 4 is q"
Syntax
charAt(index)
Parameter
index-
Nullbasierter Index des Zeichens, das zurückgegeben werden soll. Konvertiert zu einer Ganzzahl —
undefinedwird zu 0 konvertiert.
Rückgabewert
Ein String, der das Zeichen (genau eine UTF-16 Codeeinheit) am angegebenen index darstellt. Wenn index außerhalb des Bereichs von 0 – str.length - 1 liegt, gibt charAt() einen leeren String 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). charAt() gibt immer ein Zeichen zurück, dessen Wert kleiner als 65536 ist, da die höheren Codepunkte durch ein Paar von 16-Bit-Surrogat-Pseudozahlen dargestellt werden. Daher ist es notwendig, um ein vollständiges Zeichen mit einem Wert größer als 65535 zu erhalten, nicht nur charAt(i), sondern auch charAt(i + 1) abzurufen (als ob man einen String mit zwei Zeichen manipulieren würde), oder stattdessen codePointAt(i) und String.fromCodePoint() zu verwenden. Informationen zu Unicode finden Sie unter UTF-16-Zeichen, Unicode-Codepunkte und Graphem-Cluster.
charAt() ist dem Verwenden der Klammernotation zum Zugriff auf ein Zeichen am angegebenen Index sehr ähnlich. Die Hauptunterschiede sind:
charAt()versucht,indexin eine Ganzzahl zu konvertieren, während die Klammernotation dies nicht tut undindexdirekt als Eigenschaftsname verwendet.charAt()gibt einen leeren String zurück, wennindexaußerhalb des Bereichs liegt, während die Klammernotationundefinedzurückgibt.
Beispiele
Verwendung von charAt()
Das folgende Beispiel zeigt Zeichen an verschiedenen Positionen im String "Brave new world" an:
const anyString = "Brave new world";
console.log(`The character at index 0 is '${anyString.charAt()}'`);
// No index was provided, used 0 as default
console.log(`The character at index 0 is '${anyString.charAt(0)}'`);
console.log(`The character at index 1 is '${anyString.charAt(1)}'`);
console.log(`The character at index 2 is '${anyString.charAt(2)}'`);
console.log(`The character at index 3 is '${anyString.charAt(3)}'`);
console.log(`The character at index 4 is '${anyString.charAt(4)}'`);
console.log(`The character at index 999 is '${anyString.charAt(999)}'`);
Diese Zeilen zeigen folgendes an:
The character at index 0 is 'B' The character at index 0 is 'B' The character at index 1 is 'r' The character at index 2 is 'a' The character at index 3 is 'v' The character at index 4 is 'e' The character at index 999 is ''
charAt() kann einzelne Surrogate zurückgeben, die keine gültigen Unicode-Zeichen sind.
const str = "𠮷𠮾";
console.log(str.charAt(0)); // "\ud842", which is not a valid Unicode character
console.log(str.charAt(1)); // "\udfb7", which is not a valid Unicode character
Um den vollständigen Unicode-Codepunkt am angegebenen Index zu erhalten, verwenden Sie eine Indizierungsmethode, die nach Unicode-Codepunkten aufteilt, wie String.prototype.codePointAt() und Aufspaltung von Strings in ein Array von Unicode-Codepunkten.
const str = "𠮷𠮾";
console.log(String.fromCodePoint(str.codePointAt(0))); // "𠮷"
console.log([...str][0]); // "𠮷"
Hinweis:
Vermeiden Sie es, die oben genannten Lösungen mit charAt() erneut zu implementieren. Die Erkennung von einzelnen Surrogaten und deren Paarung ist komplex, und integrierte APIs sind möglicherweise leistungsfähiger, da sie direkt die interne Darstellung des Strings verwenden. Installieren Sie bei Bedarf ein Polyfill für die oben genannten APIs.
Spezifikationen
| Specification |
|---|
| ECMAScript® 2026 Language Specification # sec-string.prototype.charat |