JavaScript Strings
In JavaScript werden Strings zum Speichern und Bearbeiten von Text verwendet. Hier lernen Sie, Strings zu erstellen, zu nutzen und zu vergleichen.
In JavaScript werden Strings zum Speichern und Bearbeiten von Text verwendet. Anders als in manchen anderen Sprachen gibt es in JavaScript keinen separaten Typ für ein einzelnes Zeichen — ein Zeichen ist einfach ein string der Länge 1. Das interne Format jedes Strings ist immer UTF-16, weshalb jedes Zeichen einem numerischen Code entspricht (mehr dazu weiter unten).
Ein string repräsentiert null oder mehr Zeichen, die in Anführungszeichen geschrieben werden. Strings gehören zu JavaScripts primitiven Datentypen, bieten aber viele nützliche Methoden — unter Methoden von Primitiven erfahren Sie, warum ein Primitiv überhaupt Methoden haben kann.
Auf dieser Seite erfahren Sie, wie Sie Strings erstellen (mit einfachen Anführungszeichen, doppelten Anführungszeichen und Backticks), Sonderzeichen verwenden, die Länge eines Strings auslesen, einzelne Zeichen abrufen, Teilstrings extrahieren, die Schreibweise ändern, innerhalb eines Strings suchen und Strings korrekt vergleichen.
Beliebte String-Funktionen
| Funktion | Beschreibung |
|---|---|
charAt(index) | Gibt das Zeichen am angegebenen Index zurück. |
charCodeAt(index) | Gibt den Unicode-Wert des Zeichens am angegebenen Index zurück. |
concat(...strings) | Verkettet die string-Argumente mit dem aufrufenden string und gibt einen neuen string zurück. |
includes(searchString, position) | Prüft, ob der aufrufende string den searchString enthält. |
indexOf(searchValue, fromIndex) | Gibt den Index des ersten Vorkommens von searchValue im string zurück, wobei die Suche bei fromIndex beginnt. Gibt -1 zurück, wenn der Wert nicht gefunden wird. |
lastIndexOf(searchValue, fromIndex) | Gibt den Index des letzten Vorkommens von searchValue im aufrufenden string zurück, wobei rückwärts ab fromIndex gesucht wird. Gibt -1 zurück, wenn der Wert nicht gefunden wird. |
match(regexp) | Ruft die Übereinstimmungen beim Abgleich eines Strings mit einem regulären Ausdruck ab. |
matchAll(regexp) | Gibt einen Iterator aller Ergebnisse zurück, die beim Abgleich eines Strings mit einem regulären Ausdruck gefunden werden, einschließlich Erfassungsgruppen. |
repeat(count) | Gibt einen neuen string zurück, der aus dem aufrufenden string besteht, der count-mal wiederholt wird. |
replace(searchFor, replaceWith) | Ersetzt die erste Übereinstimmung eines Teilstrings oder Musters durch einen Ersatzstring. |
replaceAll(searchFor, replaceWith) | Ersetzt alle Übereinstimmungen eines Teilstrings oder Musters durch einen Ersatzstring. |
search(regexp) | Durchsucht den string nach einer Übereinstimmung mit einem regulären Ausdruck und gibt den Index der Übereinstimmung zurück. |
slice(startIndex, endIndex) | Extrahiert einen Abschnitt eines Strings und gibt ihn als neuen string zurück, ohne den ursprünglichen string zu verändern. |
split(separator, limit) | Teilt einen string in eine geordnete Liste von Teilstrings auf, legt diese Teilstrings in einem array ab und gibt das array zurück. Die Aufteilung erfolgt durch Suche nach einem Muster, das als erster Parameter im Methodenaufruf angegeben wird. |
startsWith(searchString, position) | Prüft, ob der aufrufende string mit den Zeichen von searchString beginnt. |
substring(startIndex, endIndex) | Gibt den Teil des Strings zwischen dem Start- und Endindex zurück, oder bis zum Ende des Strings. |
toLowerCase() | Gibt den aufrufenden string in Kleinbuchstaben zurück. |
toUpperCase() | Gibt den aufrufenden string in Großbuchstaben zurück. |
trim() | Entfernt Leerzeichen an beiden Enden des Strings. |
trimStart() oder trimLeft() | Entfernt Leerzeichen am Anfang des Strings. |
trimEnd() oder trimRight() | Entfernt Leerzeichen am Ende des Strings. |
valueOf() | Gibt den primitiven Wert eines String-Objekts zurück. |
Über Anführungszeichen
JavaScript bietet Ihnen drei Möglichkeiten, einen string zu kennzeichnen: einfache Anführungszeichen, doppelte Anführungszeichen und Backticks:
let single = 'single-quoted';
let double = "double-quoted";
let backticks = `backticks`;Einfache und doppelte Anführungszeichen verhalten sich identisch — wählen Sie einen Stil und bleiben Sie dabei. Backticks sind anders: Sie unterstützen Template-Literale und ermöglichen es, jeden Ausdruck direkt in den string einzubetten, indem er in ${…} eingeschlossen wird:
Der Ausdruck innerhalb von ${…} kann beliebig sein — eine Variable, eine Berechnung oder ein Funktionsaufruf:
Ein weiterer wesentlicher Vorteil von Backticks ist, dass sie einen string über mehrere Zeilen erstrecken lassen:
Einfache und doppelte Anführungszeichen können nicht allein mehrere Zeilen umspannen. Ein roher Zeilenumbruch innerhalb davon ist ein Syntaxfehler:
let guestList = "Guests: // SyntaxError: Invalid or unexpected token
* John ";Einfache und doppelte Anführungszeichen sind älter als Backticks, weshalb Backticks die leistungsfähigere, moderne Wahl sind.
Sie können auch eine „Template-Funktion" (ein Tagged Template) vor dem ersten Backtick platzieren:
func`string`;Die Funktion func wird automatisch aufgerufen und erhält die literalen String-Teile zusammen mit den eingebetteten Ausdrücken, sodass sie diese verarbeiten kann. So implementieren Bibliotheken benutzerdefinierte Vorlagen, im alltäglichen Code wird dies jedoch selten benötigt.
Sonderzeichen
Sie können mit Hilfe von \n (dem Zeilenumbruchzeichen) eine mehrzeilige Ausgabe aus einfach oder doppelt angeführten Strings erzeugen:
Es gibt noch andere, weniger gebräuchliche Sonderzeichen.
Einige davon finden Sie in der folgenden Liste:
- \', \" diese Sonderzeichen werden für Anführungszeichen verwendet
- \r - Wagenrücklauf. Dieses Zeichen wird heutzutage allein kaum noch verwendet. Die Kombination zweier Zeichen \r\n wird zur Darstellung eines Zeilenumbruchs in Windows-Textdateien verwendet.
- \\ - Backslash
- \t - Tabulator
- \xXX - Unicode-Zeichen mit einem bestimmten hexadezimalen Unicode XX
- \uXXXX - dies ist ein Unicode-Symbol mit dem Hex-Code XXXX in UTF-16-Kodierung. Es muss genau 4 Stellen haben.
Hier sind Beispiele mit Unicode-Escapes:
Jedes Sonderzeichen beginnt mit einem Backslash, weshalb der Backslash auch als Escape-Zeichen bezeichnet wird. Sie können ihn verwenden, um ein passendes Anführungszeichen in einem string zu platzieren:
Der Backslash dient nur dazu, JavaScript mitzuteilen, wie der Quellcode gelesen werden soll — er verschwindet, sobald der string erstellt wird, und wird daher nicht im Speicher abgelegt. Wenn Sie tatsächlich einen Backslash im string benötigen, verdoppeln Sie ihn:
Die String-Länge
Die Eigenschaft length gibt Ihnen die Anzahl der Zeichen in einem string zurück:
Beachten Sie, dass \n ein einzelnes Sonderzeichen ist, weshalb die Länge 7 beträgt (W3Docs plus ein Zeilenumbruch), nicht 8.
Ein häufiger Fehler ist der Aufruf von str.length() anstelle des Lesens von str.length. length ist eine Eigenschaft, keine Methode — das Hinzufügen von () wirft einen „not a function"-Fehler.
Zugriff auf Zeichen
Eckige Klammern [pos] sind der übliche Weg, um das Zeichen an einer bestimmten Position abzurufen. Sie können auch die Methode str.charAt(pos) aufrufen. Positionen sind nullbasiert, das erste Zeichen befindet sich also bei Index 0:
Der einzige Unterschied: Wenn an der Position kein Zeichen vorhanden ist, gibt str[pos] undefined zurück, während str.charAt(pos) einen leeren string '' zurückgibt. Moderner Code bevorzugt generell eckige Klammern; charAt wird heute selten verwendet.
Strings sind unveränderlich
Strings in JavaScript sind unveränderlich — Sie können ein Zeichen nicht an seiner Stelle ändern. Die folgende Zuweisung schlägt still fehl (im strikten Modus wird eine Ausnahme ausgelöst), sodass das ursprüngliche Zeichen unverändert bleibt:
Erstellen Sie stattdessen einen völlig neuen string und weisen Sie ihn der Variablen zu:
Groß- und Kleinschreibung
Zwei Methoden ändern die Schreibweise des gesamten Strings — toUpperCase() und toLowerCase():
Um nur ein einzelnes Zeichen in Kleinbuchstaben umzuwandeln, greifen Sie zuerst auf das Zeichen im string zu und rufen Sie dann die Methode auf diesem Zeichen auf:
Suche nach einem Teilstring
Es gibt verschiedene Möglichkeiten, nach einem Teilstring innerhalb eines Strings zu suchen.
str.indexOf
str.indexOf(substr, pos) sucht nach substr innerhalb von str, optional ab Position pos. Es gibt den Index der ersten Übereinstimmung zurück, oder -1, wenn keine Übereinstimmung gefunden wird:
str.lastIndexOf
str.lastIndexOf(substr, pos) funktioniert wie indexOf, durchsucht den string jedoch vom Ende bis zum Anfang und gibt den Index der letzten Übereinstimmung zurück.
Ein häufiger Fallstrick: Verwenden Sie indexOf nicht direkt in einem if-Test. Da eine Übereinstimmung an Position 0 falsy ist, sieht dies korrekt aus, ist es aber nicht:
Vergleichen Sie stattdessen immer mit -1:
includes, startsWith, endsWith
Das modernere str.includes(substr, pos) gibt true oder false zurück, je nachdem, ob str den substr enthält. Verwenden Sie es, wenn Sie nur wissen müssen, ob eine Übereinstimmung existiert, nicht wo:
Das optionale zweite Argument ist die Position, ab der die Suche beginnt:
str.startsWith(substr) und str.endsWith(substr) sind eng verwandt — sie prüfen den Anfang bzw. das Ende des Strings:
Extrahieren eines Teilstrings
JavaScript verfügt über drei Methoden zum Extrahieren eines Teilstrings: slice, substring und substr. In modernem Code ist slice die empfohlene Methode — sie ist am flexibelsten, und substr gilt als veraltet.
str.slice(start, end)
slice gibt den Teil des Strings von start bis (aber nicht einschließlich) end zurück:
Wird das zweite Argument weggelassen, läuft slice bis zum Ende des Strings:
Sie können auch negative Werte verwenden, die vom Ende zählen:
str.substring(start, end)
substring gibt den Teil des Strings zwischen start und end zurück. Es ähnelt slice, mit einem wesentlichen Unterschied: Wenn start größer als end ist, vertauscht substring die beiden Argumente, während slice einen leeren string zurückgibt. Außerdem behandelt es negative Argumente als 0:
str.substr(start, length)
substr gibt den Teil des Strings ab start mit einer bestimmten length zurück. Anders als die anderen Methoden ist das zweite Argument eine Länge, kein Endindex. Diese Methode ist veraltet — bevorzugen Sie slice in neuem Code.
Ein negativer start-Wert zählt vom Ende:
Vergleich von Strings
Die Operatoren <, >, <= und >= vergleichen Strings zeichenweise anhand des Unicode-Codes jedes Zeichens (siehe Vergleichsoperatoren für die allgemeinen Regeln). Zwei Konsequenzen überraschen Einsteiger häufig:
- Ein Kleinbuchstabe ist „größer als" ein Großbuchstabe, da Kleinbuchstaben höhere Codes haben:
- Buchstaben mit diakritischen Zeichen sortieren sich „außer der Reihe" — sie liegen außerhalb des grundlegenden A–Z-Bereichs und werden daher als größer verglichen:
Aus diesem Grund eignen sich die Vergleichsoperatoren gut zum Sortieren streng nach Code, aber nicht für eine benutzerfreundliche alphabetische Reihenfolge. Für einen gebietsschemaabhängigen Vergleich verwenden Sie str.localeCompare(other), das eine negative Zahl, 0 oder eine positive Zahl zurückgibt:
Zeichen und ihre Codes
Da Strings UTF-16 verwenden, hat jedes Zeichen einen numerischen Code. str.codePointAt(pos) gibt den Code des Zeichens an Position pos zurück:
String.fromCodePoint(code) macht das Gegenteil — es erstellt ein Zeichen aus einem numerischen Code:
Sie können auch ein Zeichen anhand seines Codes in einem string-Literal einfügen, indem Sie \u gefolgt vom Hex-Code verwenden:
Als vollständigeres Beispiel hier ein string, der aus den Zeichen mit den Codes 65..220 besteht:
Die Großbuchstaben kommen zuerst, dann einige Sonderzeichen, und die Ausgabe endet etwa bei Ö.
Verwandte Themen
- JavaScript-Datentypen — wo Strings unter den Primitiven einzuordnen sind.
- Methoden von Primitiven — wie ein primitiver string Methoden haben kann.
- Zahlen — der begleitende primitive Typ.
- Vergleichsoperatoren — die vollständigen Vergleichsregeln.
- Array-Methoden — nützlich, nachdem
split()einen string in ein array umwandelt.