Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.
* Einige Teile dieser Funktion werden möglicherweise unterschiedlich gut unterstützt.
Das String-Objekt wird verwendet, um eine Zeichenfolge darzustellen und zu manipulieren.
Strings sind nützlich, um Daten zu halten, die in Textform dargestellt werden können. Zu den am häufigsten verwendeten Operationen mit Strings gehört das Überprüfen ihrer Länge, das Erstellen und Verketten mit den + und += string operators, das Überprüfen der Existenz oder der Position von Teilstrings mit der indexOf()-Methode oder das Extrahieren von Teilstrings mit der substring()-Methode.
Strings können als Primitive, aus Zeichenfolgenliteralen oder als Objekte unter Verwendung des String()-Konstruktors erstellt werden:
String-Primitive und String-Objekte teilen viele Verhaltensweisen, weisen jedoch auch wichtige Unterschiede und Einschränkungen auf. Siehe "String-Primitive und String-Objekte" unten.
Zeichenfolgenliterale können mit einfachen oder doppelten Anführungszeichen angegeben werden, die identisch behandelt werden, oder mit dem Backtick-Zeichen `. Letztere Form gibt ein Template Literal an: Mit dieser Form können Sie Ausdrücke interpolieren. Weitere Informationen zur Syntax von Zeichenfolgenliteralen finden Sie im lexikalischen Grammatik.
Es gibt zwei Möglichkeiten, auf ein einzelnes Zeichen in einem String zuzugreifen. Die erste ist die charAt()-Methode:
Die andere Möglichkeit besteht darin, den String als ein arrayähnliches Objekt zu behandeln, wobei einzelne Zeichen einem numerischen Index entsprechen:
Wenn Sie die Klammer-Notation für den Zeichen-Zugriff verwenden, wird der Versuch, diese Eigenschaften zu löschen oder einen Wert zuzuweisen, nicht erfolgreich sein. Die betreffenden Eigenschaften sind weder beschreibbar noch konfigurierbar. (Siehe Object.defineProperty() für weitere Informationen.)
Verwenden Sie die Kleiner- und Größer-Operatoren, um Strings zu vergleichen:
Beachten Sie, dass alle Vergleichsoperatoren, einschließlich === und ==, Strings case-sensitiv vergleichen. Ein gebräuchlicher Weg, um Strings case-insensitiv zu vergleichen, besteht darin, beide in denselben Fall (groß oder klein) zu konvertieren, bevor Sie sie vergleichen.
Die Wahl, ob sie durch toUpperCase() oder toLowerCase() transformieren, ist meist willkürlich, und keine davon ist vollständig robust, wenn sie über das lateinische Alphabet hinausgeht. Zum Beispiel werden der deutsche Kleinbuchstabe ß und ss beide zu SS durch toUpperCase() transformiert, während der türkische Buchstabe ı fälschlicherweise als ungleich zu I durch toLowerCase() gemeldet werden würde, es sei denn, es wird speziell toLocaleLowerCase("tr") verwendet.
Eine länderabhängige und robuste Lösung für die Prüfung der case-insensitiven Gleichheit besteht darin, die Intl.Collator-API oder die localeCompare()-Methode des Strings zu verwenden – sie teilen die gleiche Schnittstelle – mit der sensitivity-Option auf "accent" oder "base" gesetzt.
Die localeCompare()-Methode ermöglicht den Zeichenfolgenvergleich in ähnlicher Weise wie strcmp() — sie ermöglicht das Sortieren von Strings auf eine landesspezifische Weise.
Beachten Sie, dass JavaScript zwischen String-Objekten und primitiven Zeichenfolgen-Werten unterscheidet. (Dasselbe gilt für Boolean und Numbers).
Zeichenfolgenliterale (durch doppelte oder einfache Anführungszeichen definiert) und Strings, die aus String-Aufrufen in einem Nicht-Konstruktor-Kontext zurückgegeben werden (das heißt, ohne Verwendung des new-Schlüsselworts aufgerufen), sind primitive Strings. In Kontexten, in denen eine Methode auf einem primitiven String aufgerufen oder ein Eigenschafts-Lookup durchgeführt wird, wird JavaScript automatisch das String-Primitive umhüllen und die Methode aufrufen oder das Eigenschafts-Lookup am Wrapper-Objekt durchführen.
Warnung: Sie sollten selten String als Konstruktor verwenden.
String-Primitive und String-Objekte geben auch unterschiedliche Ergebnisse zurück, wenn eval() verwendet wird. Primitive, die an eval übergeben werden, werden als Quellcode behandelt; String-Objekte werden wie alle anderen Objekte behandelt, indem das Objekt zurückgegeben wird. Zum Beispiel:
Aus diesen Gründen kann der Code brechen, wenn er auf String-Objekte trifft, obwohl er stattdessen eine primitive Zeichenfolge erwartet, obwohl sich Autoren im Allgemeinen keine Sorgen über die Unterscheidung machen müssen.
Ein String-Objekt kann immer mit der valueOf()-Methode in sein primitives Gegenstück konvertiert werden.
Viele eingebaute Operationen, die Strings erwarten, zwingen ihre Argumente erst zu Strings (was weitgehend der Grund ist, warum sich String-Objekte ähnlich wie String-Primitive verhalten). Die Operation kann wie folgt zusammengefasst werden:
Es gibt mehrere Möglichkeiten, nahezu den gleichen Effekt in JavaScript zu erzielen.
Je nach Anwendungsfall möchten Sie möglicherweise `${x}` (um das eingebautes Verhalten nachzuahmen) oder String(x) (um Symbolwerte ohne Fehlerbehandlung zu handhaben) verwenden, aber Sie sollten nicht "" + x verwenden.
Strings werden grundsätzlich als Sequenzen von UTF-16-Codeeinheiten dargestellt. In der UTF-16-Codierung ist jede Code-Einheit genau 16 Bit lang. Das bedeutet, dass es maximal 216, oder 65536 mögliche Zeichen gibt, die als einzelne UTF-16-Codeeinheiten darstellbar sind. Diese Zeichensatz wird als Basic Multilingual Plane (BMP) bezeichnet und umfasst die häufigsten Zeichen wie die lateinischen, griechischen, kyrillischen Alphabete sowie viele ostasiatische Zeichen. Jede Code-Einheit kann mit \u gefolgt von genau vier Hexadezimalzahlen in einem String geschrieben werden.
Das gesamte Unicode-Zeichenarsenal ist jedoch wesentlich größer als 65536. Die zusätzlichen Zeichen werden in UTF-16 als Surrogatpaare gespeichert, die Paare von 16-Bit-Codeeinheiten sind, die ein einzelnes Zeichen darstellen. Um Mehrdeutigkeiten zu vermeiden, müssen die beiden Teile des Paares zwischen 0xD800 und 0xDFFF liegen, und diese Codeeinheiten werden nicht verwendet, um Zeichen mit einer einzigen Codeeinheit zu kodieren. (Genauer gesagt, führende Surrogate, auch als High-Surrogate-Codes bezeichnet, haben Werte zwischen 0xD800 und 0xDBFF, während abschließende Surrogate, auch als Low-Surrogate-Codes bezeichnet, Werte zwischen 0xDC00 und 0xDFFF haben.) Jedes Unicode-Zeichen, bestehend aus einem oder zwei UTF-16-Codeeinheiten, wird ebenfalls als Unicode-Codepunkt bezeichnet. Jeder Unicode-Codepunkt kann mit \u{xxxxxx} in einem String geschrieben werden, wobei xxxxxx 1–6 Hex-Ziffern repräsentiert.
Ein "alleiniges Surrogat" ist eine 16-Bit-Codeeinheit, die eine der folgenden Beschreibungen erfüllt:
Alleinstehende Surrogate stellen kein Unicode-Zeichen dar. Obwohl die meisten eingebauten JavaScript-Methoden sie korrekt behandeln, da sie alle basierend auf UTF-16-Codeeinheiten arbeiten, sind alleinstehende Surrogate meistens keine gültigen Werte, wenn sie mit anderen Systemen interagieren—zum Beispiel, encodeURI() wird einen URIError für alleinstehende Surrogate werfen, da die URI-Codierung UTF-8-Codierung verwendet, die keine Codierung für alleinstehende Surrogate hat. Strings, die keine alleinstehenden Surrogate enthalten, werden als wohlgeformte Strings bezeichnet und sind sicher, mit Funktionen verwendet zu werden, die nicht mit UTF-16 arbeiten (wie encodeURI() oder TextEncoder). Sie können mit der isWellFormed()-Methode überprüfen, ob ein String wohlgeformt ist, oder alleinstehende Surrogate mit der toWellFormed()-Methode bereinigen.
Über die Unicode-Zeichen hinaus gibt es bestimmte Sequenzen von Unicode-Zeichen, die als eine visuelle Einheit behandelt werden sollten, bekannt als ein Graphem-Cluster. Der häufigste Fall sind Emojis: Viele Emojis, die eine Reihe von Variationen haben, werden tatsächlich durch mehrere Emojis gebildet, die in der Regel durch das <ZWJ> (U+200D) Zeichen verbunden werden.
Sie müssen darauf achten, auf welcher Ebene der Zeichen Sie iterieren. Zum Beispiel wird split("") nach UTF-16-Codeeinheiten aufteilen und Surrogatpaare trennen. Zeichenfolgenindizes beziehen sich auch auf den Index jeder UTF-16-Codeeinheit. Andererseits iteriert [Symbol.iterator]() nach Unicode-Codepunkten. Die Iteration durch Graphem-Cluster erfordert ein benutzerdefiniertes Skript.
Erstellt String-Objekte. Wenn es als Funktion aufgerufen wird, gibt es primitive Werte vom Typ String zurück.
Gibt eine Zeichenfolge zurück, die durch die angegebene Sequenz von Unicode-Werten erstellt wurde.
String.fromCodePoint()Gibt eine Zeichenfolge zurück, die durch die angegebene Sequenz von Codepunkten erstellt wurde.
String.raw()Gibt eine Zeichenfolge zurück, die aus einem rohen Template-String erstellt wurde.
Diese Eigenschaften sind auf String.prototype definiert und werden von allen String-Instanzen geteilt.
String.prototype.constructorDie Konstruktorfunktion, die das Instanzobjekt erstellt hat. Für String-Instanzen ist der anfängliche Wert der String-Konstruktor.
Diese Eigenschaften sind eigene Eigenschaften jeder String-Instanz.
lengthReflektiert die Länge des Strings. Nur lesbar.
Gibt das Zeichen (genau eine UTF-16-Codeeinheit) am angegebenen Index zurück. Akzeptiert negative Ganzzahlen, die vom letzten Zeichen der Zeichenfolge zurückzählen.
String.prototype.charAt()Gibt das Zeichen (genau eine UTF-16-Codeeinheit) am angegebenen Index zurück.
String.prototype.charCodeAt()Gibt eine Zahl zurück, die den Wert der UTF-16-Codeeinheit an dem angegebenen Index darstellt.
String.prototype.codePointAt()Gibt eine nichtnegative Ganzzahl zurück, die den Codepunktwert des UTF-16 kodierten Codepunkts darstellt, beginnend an der angegebenen Position pos.
String.prototype.concat()Kombiniert den Text von zwei (oder mehr) Zeichenfolgen und gibt eine neue Zeichenfolge zurück.
String.prototype.endsWith()Bestimmt, ob eine Zeichenfolge mit den Zeichen der Zeichenfolge searchString endet.
String.prototype.includes()Bestimmt, ob die aufrufende Zeichenfolge searchString enthält.
String.prototype.indexOf()Gibt den Index innerhalb dieser Zeichenfolge der ersten Vorkommen von searchValue zurück, oder -1, wenn nicht gefunden.
String.prototype.isWellFormed()Gibt einen boolean-Wert zurück, der angibt, ob diese Zeichenfolge keine alleinstehenden Surrogate enthält.
String.prototype.lastIndexOf()Gibt den Index innerhalb dieser Zeichenfolge der letzten Vorkommen von searchValue zurück, oder -1, wenn nicht gefunden.
String.prototype.localeCompare()Gibt eine Zahl zurück, die angibt, ob die Referenzzeichenfolge compareString vor, nach oder gleich der angegebenen Zeichenfolge in der Sortierreihenfolge kommt.
String.prototype.match()Wird verwendet, um den regulären Ausdruck regexp mit einer Zeichenfolge zu vergleichen.
String.prototype.matchAll()Gibt einen Iterator für alle Treffer von regexp zurück.
String.prototype.normalize()Gibt die Unicode-Normalisierungsform des aufgerufenen Zeichenfolgenwertes zurück.
String.prototype.padEnd()Füllt die aktuelle Zeichenfolge vom Ende mit einer angegebenen Zeichenfolge auf und gibt eine neue Zeichenfolge der Länge targetLength zurück.
String.prototype.padStart()Füllt die aktuelle Zeichenfolge vom Anfang mit einer angegebenen Zeichenfolge auf und gibt eine neue Zeichenfolge der Länge targetLength zurück.
String.prototype.repeat()Gibt eine Zeichenfolge bestehend aus den Elementen des Objekts zurück, die count mal wiederholt werden.
String.prototype.replace()Wird verwendet, um Vorkommen von searchFor durch replaceWith zu ersetzen. searchFor kann eine Zeichenfolge oder ein regulärer Ausdruck sein, und replaceWith kann eine Zeichenfolge oder Funktion sein.
String.prototype.replaceAll()Wird verwendet, um alle Vorkommen von searchFor durch replaceWith zu ersetzen. searchFor kann eine Zeichenfolge oder ein regulärer Ausdruck sein, und replaceWith kann eine Zeichenfolge oder Funktion sein.
String.prototype.search()Suchen Sie nach einem Treffer zwischen einem regulären Ausdruck regexp und der aufgerufenen Zeichenfolge.
String.prototype.slice()Extrahiert einen Abschnitt einer Zeichenfolge und gibt eine neue Zeichenfolge zurück.
String.prototype.split()Gibt ein Array von Zeichenfolgen zurück, das durch das Trennen der aufgerufenen Zeichenfolge an Vorkommen der Teilzeichenfolge sep befüllt wird.
String.prototype.startsWith()Bestimmt, ob die aufgerufene Zeichenfolge mit den Zeichen der Zeichenfolge searchString beginnt.
String.prototype.substr()Gibt einen Teil der Zeichenfolge zurück, der am angegebenen Index beginnt und für eine bestimmte Anzahl von Zeichen danach fortgesetzt wird.
String.prototype.substring()Gibt eine neue Zeichenfolge zurück, die aus den Zeichen der aufgerufenen Zeichenfolge von (oder zwischen) dem angegebenen Index (oder Indizes) besteht.
String.prototype.toLocaleLowerCase()Die Zeichen innerhalb einer Zeichenfolge werden unter Berücksichtigung des aktuellen Gebietsschemas in Kleinbuchstaben umgewandelt.
Für die meisten Sprachen entspricht dies der toLowerCase().
String.prototype.toLocaleUpperCase()Die Zeichen innerhalb einer Zeichenfolge werden unter Berücksichtigung des aktuellen Gebietsschemas in Großbuchstaben umgewandelt.
Für die meisten Sprachen entspricht dies der toUpperCase().
String.prototype.toLowerCase()Gibt den aufgerufenen Zeichenfolgenwert in Kleinbuchstaben umgewandelt zurück.
String.prototype.toString()Gibt eine Zeichenfolge zurück, die das angegebene Objekt darstellt. Überschreibt die Object.prototype.toString()-Methode.
String.prototype.toUpperCase()Gibt den aufgerufenen Zeichenfolgenwert in Großbuchstaben umgewandelt zurück.
String.prototype.toWellFormed()Gibt eine Zeichenfolge zurück, bei der alle alleinstehenden Surrogate der aktuellen Zeichenfolge durch das Unicode-Ersatzzeichen U+FFFD ersetzt werden.
String.prototype.trim()Entfernt Leerzeichen vom Anfang und Ende der Zeichenfolge.
String.prototype.trimEnd()Entfernt Leerzeichen vom Ende der Zeichenfolge.
String.prototype.trimStart()Entfernt Leerzeichen vom Anfang der Zeichenfolge.
String.prototype.valueOf()Gibt den primitiven Wert des angegebenen Objekts zurück. Überschreibt die Object.prototype.valueOf()-Methode.
String.prototype[Symbol.iterator]()Gibt ein neues Iterator-Objekt zurück, das über die Codepunkte eines String-Werts iteriert und jeden Codepunkt als String-Wert zurückgibt.
Warnung: Veraltet. Vermeiden Sie diese Methoden.
Sie sind von begrenztem Nutzen, da sie auf einem sehr alten HTML-Standard beruhen und nur einen Teil der derzeit verfügbaren HTML-Tags und -Attribute bieten. Viele von ihnen erstellen heute veraltetes oder nicht standardmäßiges Markup. Darüber hinaus führen sie eine Zeichenfolgenverkettung ohne jegliche Validierung oder Bereinigung aus, was sie zu einer potenziellen Sicherheitsbedrohung macht, wenn sie direkt mit innerHTML eingefügt werden. Verwenden Sie DOM-APIs wie document.createElement() stattdessen.
<a name="name"> (Hypertext-Ziel)
String.prototype.big() <big> String.prototype.blink()<blink>
String.prototype.bold() <b> String.prototype.fixed() <tt> String.prototype.fontcolor() String.prototype.fontsize() String.prototype.italics() <i> String.prototype.link()<a href="url"> (Link zur URL)
String.prototype.small() <small> String.prototype.strike() <strike> String.prototype.sub() <sub> String.prototype.sup() <sup>Beachten Sie, dass diese Methoden nicht überprüfen, ob die Zeichenfolge selbst HTML-Tags enthält, sodass es möglich ist, ungültiges HTML zu erstellen:
Das einzige Escaping, das sie durchführen, besteht darin, " im Attributwert (für anchor(), fontcolor(), fontsize() und link()) mit " zu ersetzen.
Die String()-Funktion ist eine zuverlässigere Methode, um Werte in Zeichenfolgen umzuwandeln, als die toString()-Methode des Werts aufzurufen, da erstere funktioniert, wenn sie auf null und undefined verwendet wird. Zum Beispiel:
| ECMAScript® 2027 Language Specification # sec-string-objects |
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.
Der Bauplan für ein besseres Internet.
Teile dieses Inhalts sind ©1998–2026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfügbar unter einer Creative-Commons-Lizenz.