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
-Objekten gibt eine neue Zeichenkette zurück, die aus der einzelnen UTF-16-Codeeinheit an dem angegebenen Index besteht.
charAt()
indexiert die Zeichenkette immer als eine Sequenz von UTF-16-Codeeinheiten, daher kann es einzelne Surrogate zurückgeben. 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 zurückzugebenden Zeichens. In eine ganze Zahl konvertiert —
undefined
wird zu 0 konvertiert.
Rückgabewert
Eine Zeichenkette, die 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()
eine leere Zeichenkette zurück.
Beschreibung
Zeichen in einer Zeichenkette werden von links nach rechts indiziert. Der Index des ersten Zeichens ist 0
, und der Index des letzten Zeichens in einer Zeichenkette 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-Pseudounterschnitten dargestellt werden. Um daher ein vollständiges Zeichen mit einem Wert größer als 65535
zu erhalten, ist es notwendig, nicht nur charAt(i)
, sondern auch charAt(i + 1)
abzurufen (als ob man eine Zeichenkette mit zwei Zeichen manipuliert), oder stattdessen codePointAt(i)
und String.fromCodePoint()
zu verwenden. Für Informationen zu Unicode siehe UTF-16-Zeichen, Unicode-Codepunkte und Graphem-Cluster.
charAt()
ist sehr ähnlich zur Verwendung von Klammernotation, um auf ein Zeichen an dem angegebenen Index zuzugreifen. Die Hauptunterschiede sind:
charAt()
versucht,index
in eine ganze Zahl zu konvertieren, während die Klammernotation dies nicht tut undindex
direkt als Eigenschaftsname verwendet.charAt()
gibt eine leere Zeichenkette zurück, wennindex
außerhalb des Bereichs liegt, während die Klammernotationundefined
zurückgibt.
Beispiele
Verwendung von charAt()
Das folgende Beispiel zeigt Zeichen an verschiedenen Stellen in der Zeichenkette "Brave new world"
:
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 Indexierungsmethode, die nach Unicode-Codepunkten aufteilt, wie String.prototype.codePointAt()
und Zeichenketten aufteilen in ein Array von Unicode-Codepunkten.
const str = "𠮷𠮾";
console.log(String.fromCodePoint(str.codePointAt(0))); // "𠮷"
console.log([...str][0]); // "𠮷"
Hinweis:
Vermeiden Sie es, die obigen Lösungen mit charAt()
neu zu implementieren. Die Erkennung einzelner Surrogate und deren Paarung ist komplex, und eingebettete APIs könnten leistungsfähiger sein, da sie direkt die interne Darstellung der Zeichenkette verwenden. Installieren Sie bei Bedarf ein Polyfill für die oben genannten APIs.
Spezifikationen
Specification |
---|
ECMAScript® 2026 Language Specification # sec-string.prototype.charat |