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 Methode charAt() von String-Werten gibt einen neuen String zurück, der aus der einzelnen UTF-16-Code-Einheit an dem angegebenen Index besteht.

charAt() indexiert den String immer als eine Abfolge von UTF-16-Code-Einheiten, sodass möglicherweise einzelne Surrogate zurückgegeben werden. Um den vollständigen Unicode-Codepunkt an dem 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

js
charAt(index)

Parameter

index

Der nullbasierte Index des zurückzugebenden Zeichens. Wird in eine Ganzzahl konvertiertundefined wird zu 0 konvertiert.

Rückgabewert

Ein String, der das Zeichen (genau eine UTF-16-Code-Einheit) am angegebenen index repräsentiert. Wenn index außerhalb des Bereichs von 0str.length - 1 liegt, gibt charAt() einen leeren String zurück.

Beschreibung

Die 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-Pseudozeichen 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 bearbeiten würde), oder stattdessen codePointAt(i) und String.fromCodePoint() zu verwenden. Weitere Informationen zu Unicode finden Sie unter UTF-16-Zeichen, Unicode-Codepunkte und Graphem-Cluster.

charAt() ist sehr ähnlich zur Verwendung der Klammernotation, um auf ein Zeichen am angegebenen Index zuzugreifen. Die Hauptunterschiede sind:

  • charAt() versucht, index in eine Ganzzahl umzuwandeln, während die Klammernotation dies nicht tut und index direkt als Eigenschaftsnamen verwendet.
  • charAt() gibt einen leeren String zurück, wenn index außerhalb des Bereichs liegt, während die Klammernotation undefined zurückgibt.

Beispiele

Verwendung von charAt()

Das folgende Beispiel zeigt Zeichen an verschiedenen Positionen im String "Brave new world":

js
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.

js
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 an dem gegebenen Index zu erhalten, verwenden Sie eine Indexierungsmethode, die nach Unicode-Codepunkten aufteilt, wie zum Beispiel String.prototype.codePointAt() und Strings aufteilen in ein Array von Unicode-Codepunkten.

js
const str = "𠮷𠮾";
console.log(String.fromCodePoint(str.codePointAt(0))); // "𠮷"
console.log([...str][0]); // "𠮷"

Hinweis: Vermeiden Sie, die oben genannten Lösungen mit charAt() neu zu implementieren. Die Erkennung von einzelnen Surrogaten und deren Paarung ist komplex, und integrierte APIs könnten leistungsstärker sein, da sie direkt die interne Repräsentation des Strings verwenden. Installieren Sie bei Bedarf ein Polyfill für die oben genannten APIs.

Spezifikationen

Specification
ECMAScript® 2025 Language Specification
# sec-string.prototype.charat

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
charAt

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Siehe auch