Baseline Widely available
Die charAt()
-Methode von String
-Werten gibt einen neuen String zurück, der aus der einzelnen UTF-16-Codeeinheit an dem angegebenen Index besteht.
charAt()
indiziert den String immer als eine Sequenz von UTF-16-Codeeinheiten, sodass es einzelne Surrogate zurückgeben kann. Um den vollständigen Unicode-Codepunkt an dem angegebenen Index zu erhalten, verwenden Sie String.prototype.codePointAt()
und String.fromCodePoint()
.
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 Parameter
index
Nullbasierter Index des zurückzugebenden Zeichens. Zu einer Ganzzahl konvertiert â undefined
wird zu 0 konvertiert.
Ein String, der das Zeichen (genau eine UTF-16-Codeeinheit) am angegebenen index
darstellt. Wenn index
auÃerhalb des Bereichs von 0
bis str.length - 1
liegt, gibt charAt()
einen leeren String zurück.
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 liegen im Bereich 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-Pseudoocharakteren 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)
zu verwenden (als ob man eine Zeichenkette mit zwei Zeichen manipuliert), oder stattdessen codePointAt(i)
und String.fromCodePoint()
zu verwenden. Für Informationen über Unicode siehe UTF-16-Zeichen, Unicode-Codepunkte und Graphemcluster.
charAt()
ist sehr ähnlich zur Verwendung der Klammernotation, um auf ein Zeichen an dem angegebenen Index zuzugreifen. Die Hauptunterschiede sind:
charAt()
versucht, index
in eine Ganzzahl zu konvertieren, während die Klammernotation dies nicht tut und index
direkt als Eigenschaftsname verwendet.charAt()
gibt einen leeren String zurück, wenn index
auÃerhalb des Bereichs liegt, während die Klammernotation undefined
zurückgibt.Das folgende Beispiel zeigt Zeichen an verschiedenen Stellen im String "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 an dem angegebenen Index zu erhalten, verwenden Sie eine Indizierungsmethode, die nach Unicode-Codepunkten aufteilt, wie String.prototype.codePointAt()
und Strings Aufspalten 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 unter Verwendung von charAt()
neu zu implementieren. Die Erkennung einzelner Surrogate und deren Paarung ist komplex, und integrierte APIs können möglicherweise leistungsfähiger sein, da sie direkt die interne Darstellung des Strings verwenden. Installieren Sie bei Bedarf ein Polyfill für die oben genannten APIs.
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