Heim >Web-Frontend >js-Tutorial >Wie führe ich mehrere String-Ersetzungen in JavaScript durch?
Mehrfache String-Ersetzung in JavaScript
String-Ersetzung ist eine häufige Aufgabe in der Programmierung. In JavaScript können Sie mit der Methode replace() eine einzelne Übereinstimmung einer angegebenen Zeichenfolge durch eine neue ersetzen. Was aber, wenn Sie mehrere Strings gleichzeitig durch mehrere andere Strings ersetzen möchten?
Betrachten Sie das folgende Beispiel:
var str = "I have a cat, a dog, and a goat."; // Attempt to replace multiple strings with incorrect results str = str.replace(/cat/gi, "dog"); str = str.replace(/dog/gi, "goat"); str = str.replace(/goat/gi, "cat"); // Output: "I have a cat, a cat, and a cat"
Wie Sie sehen, führt dies nicht zum gewünschten Ergebnis Ergebnis von „Ich habe einen Hund, eine Ziege und eine Katze.“ Stattdessen wird fälschlicherweise jedes Vorkommen von „cat“ durch „dog“ usw. ersetzt.
Spezifische Lösung
Um das gewünschte Ergebnis zu erzielen, können Sie a verwenden Funktion zur Verarbeitung jeder Ersetzung:
var str = "I have a cat, a dog, and a goat."; var mapObj = { cat:"dog", dog:"goat", goat:"cat" }; str = str.replace(/cat|dog|goat/gi, function(matched){ return mapObj[matched]; }); // Output: "I have a dog, a goat, and a cat"
Bei diesem Ansatz erstellen wir ein Kartenobjekt (mapObj), das die Schlüssel-Wert-Paare von definiert Saiten, die ersetzt werden sollen. Dann verwenden wir einen regulären Ausdruck, der mit einer dieser Zeichenfolgen übereinstimmt und sie durch den entsprechenden Wert aus dem Kartenobjekt ersetzt.
Verallgemeinerung der Lösung
Um diesen Ansatz zu verallgemeinern können Sie den regulären Ausdruck dynamisch erstellen und das Kartenobjekt nach Bedarf aktualisieren:
var mapObj = {cat:"dog",dog:"goat",goat:"cat"}; var re = new RegExp(Object.keys(mapObj).join("|"),"gi"); str = str.replace(re, function(matched){ return mapObj[matched]; });
Mit diesem Ansatz können Sie Ersatzpaare hinzufügen oder entfernen, ohne den regulären Ausdruck zu ändern Ausdruck selbst.
Wiederverwendbare Funktion
Um den Prozess weiter zu abstrahieren, können Sie eine wiederverwendbare Funktion erstellen:
function replaceAll(str,mapObj){ var re = new RegExp(Object.keys(mapObj).join("|"),"gi"); return str.replace(re, function(matched){ return mapObj[matched.toLowerCase()]; }); }
Sie können diese dann verwenden Funktion zum Ersetzen mehrerer Zeichenfolgen durch mehrere andere Zeichenfolgen in einer bestimmten Zeichenfolge.
Das obige ist der detaillierte Inhalt vonWie führe ich mehrere String-Ersetzungen in JavaScript durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!