HOWTO · TypeScript
Überprüfen Sie, ob ein String einen bestimmten Text in TypeScript hat
Dieses Tutorial zeigt, wie Sie in TypeScript überprüfen, ob eine Zeichenfolge einen bestimmten Text enthält.
Auf dieser Seite
Mit includes() prüfen Sie direkt, ob ein TypeScript-String einen Teilstring enthält; das Ergebnis ist ein boolescher Wert. Verwenden Sie indexOf(), wenn Sie zusätzlich die Position des Treffers benötigen, und search() oder RegExp.test(), wenn die Bedingung einem Muster für reguläre Ausdrücke entspricht. Diese Methoden unterscheiden zwischen Groß- und Kleinschreibung, sofern Sie den Text nicht ausdrücklich vereinheitlichen oder ein Muster ohne Beachtung der Groß- und Kleinschreibung verwenden.
Die ausführbaren Beispiele verwenden JavaScript-Syntax, die auch in TypeScript gültig ist. Sie können sie daher ohne besondere Transpilierungskonfiguration in eine TypeScript-Datei übernehmen.
includes() für eine direkte Teilstringsuche verwenden
Verwenden Sie includes() für eine direkte boolesche Antwort: Die Methode gibt true zurück, wenn der durchsuchte String den angegebenen Teilstring enthält, andernfalls false. Für eine einfache Teilstringsuche ist dieses gut lesbare boolesche Ergebnis meist die passende Wahl.
Rufen Sie includes() für eine direkte boolesche Antwort auf dem String auf, den Sie durchsuchen möchten. Das Argument ist der gesuchte Text.
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
const message = "TypeScript string search";
const query = "string";
const containsQuery = message.includes(query);
console.log(containsQuery);
true
Das Ergebnis ist true, weil der exakte kleingeschriebene Teilstring in message vorkommt. Die Suche nach "String" würde beispielsweise false zurückgeben. includes() ändert weder die Groß- und Kleinschreibung noch führt die Methode einen sprachabhängigen Vergleich durch. Wenn die Groß- und Kleinschreibung bei Ihren Daten keine Rolle spielen soll, vereinheitlichen Sie beide Werte vor dem Vergleich wie im letzten Abschnitt.
indexOf() verwenden, wenn Sie die Trefferposition benötigen
indexOf() durchsucht den String, auf dem die Methode aufgerufen wird, nach dem ersten Vorkommen eines Teilstrings und gibt dessen Position ab null zurück. Gibt es keinen Treffer, lautet das Ergebnis -1. Um daraus einen booleschen Wert abzuleiten, vergleichen Sie das Ergebnis ausdrücklich mit -1: Eine direkte Prüfung der Zahl in einer if-Bedingung würde einen Treffer an Position 0 falsch behandeln, da null als falsy gilt.
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
const message = "TypeScript string search";
const query = "TypeScript";
const position = message.indexOf(query);
const containsQuery = position !== -1;
console.log(position, containsQuery);
0 true
Hier steht das erste Zeichen an Position null, daher meldet der Vergleich korrekt einen Treffer. Verwenden Sie die Position, wenn Sie das erste Vorkommen hervorheben oder den String an dieser Stelle teilen möchten. Wenn Sie nur wissen müssen, ob der Teilstring vorkommt, verwenden Sie includes(). Beide Methoden vergleichen den wörtlichen Text und unterscheiden zwischen Groß- und Kleinschreibung. Bei diesen String-Methoden gilt ein leerer Suchstring als vorhanden. Prüfen Sie Benutzereingaben deshalb separat, wenn eine leere Suchanfrage nicht als Treffer zählen soll.
search() für Treffer mit regulären Ausdrücken verwenden
search() gibt die Position des ersten Treffers eines regulären Ausdrucks zurück oder -1, wenn kein Treffer gefunden wird. Wenn Sie einen Wert vom Typ RegExp übergeben, ist das Muster ausdrücklich festgelegt, wie im folgenden Beispiel. JavaScript wandelt auch ein String-Argument in einen regulären Ausdruck um. Ein an search() übergebener String wird daher weiterhin als Mustersyntax behandelt; anders als includes() sucht die Methode nicht nach wörtlichem Text. Für den numerischen Rückgabewert gilt dieselbe Vergleichsregel mit -1 wie bei indexOf().
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
const message = "Order 42 is ready";
const position = message.search(/\d+/);
console.log(position);
6
Der Ausdruck /\d+/ findet eine oder mehrere Ziffern. search() gibt die Anfangsposition dieses Treffers zurück. Wird beispielsweise der String "42" übergeben, wandelt JavaScript ihn in einen regulären Ausdruck um und findet die Ziffern als Muster. Wenn Sie nur ein Ja-Nein-Ergebnis für das Muster benötigen, drückt RegExp.test() diese Absicht direkter aus.
RegExp.test() für Musterprüfungen verwenden
Rufen Sie test() auf einem regulären Ausdruck auf, um einen booleschen Wert zu erhalten, der angibt, ob die Eingabe dem Muster entspricht. Ein Regex-Literal ist eine sichere und knappe Wahl, wenn das Muster Bestandteil Ihres Codes ist. Reguläre Ausdrücke können Zeichenklassen, Wiederholungen und Alternativen ausdrücken, die eine Suche nach einem wörtlichen Teilstring nicht abbilden kann.
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
const message = "TypeScript string search";
const pattern = /TypeScript/;
const matches = pattern.test(message);
console.log(matches);
true
Wenn ein Muster aus einer Variablen stammt, behandelt die Konstruktion eines RegExp Zeichen wie ., * und [ als Mustersyntax. Soll die Variable wörtlichen Text darstellen, maskieren Sie diese Zeichen zuerst:
const userText = "price (USD)";
const escapedText = userText.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
const literalPattern = new RegExp(escapedText);
const found = literalPattern.test("The price (USD) is listed");
console.log(found);
true
So verhindern Sie, dass Satzzeichen in userText die beabsichtigte Suche nach wörtlichem Text verändern. Vermeiden Sie die Flags g und y, wenn Sie test() wiederholt als einfache boolesche Prüfung verwenden: Mit diesen Flags hängt das Ergebnis vom veränderlichen Zustand lastIndex des regulären Ausdrucks ab.
Groß- und Kleinschreibung sowie mehrere Suchbegriffe berücksichtigen
includes(), indexOf() und reguläre Ausdrücke unterscheiden zwischen Groß- und Kleinschreibung, sofern Sie keinen anderen Vergleich wählen. Für eine einfache Teilstringsuche ohne Beachtung der Groß- und Kleinschreibung vereinheitlichen Sie beide Strings auf dieselbe Weise. toLowerCase() eignet sich für viele Programmierbezeichner und englische Texte, ist aber kein allgemeiner Ersatz für einen sprachabhängigen Vergleich.
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
const message = "TypeScript makes text checks clear";
const query = "TYPESCRIPT";
const containsQuery = message.toLowerCase().includes(query.toLowerCase());
const candidates = ["JavaScript", "TypeScript", "Python"];
const containsCandidate = candidates.some((item) =>
message.includes(item)
);
console.log(containsQuery, containsCandidate);
true true
Die erste Prüfung ignoriert die Groß- und Kleinschreibung, indem sie beide Seiten vereinheitlicht. Der Aufruf von some() prüft, ob mindestens einer der Suchbegriffe in der Nachricht vorkommt, und beendet die Suche beim ersten Treffer. Verwenden Sie stattdessen every(), wenn alle aufgeführten Begriffe vorkommen müssen. Legen Sie ausdrücklich fest, ob leere Suchbegriffe zulässig sind, bevor Sie diese Muster verwenden, denn ein leerer Teilstring trifft auf jeden String zu. Wählen Sie includes() für die Suche nach wörtlichem Text, indexOf(), wenn die Position wichtig ist, und search() oder RegExp.test(), wenn Sie ein Muster prüfen möchten.