Heim >Web-Frontend >js-Tutorial >Wie führe ich mehrere String-Ersetzungen in JavaScript durch?

Wie führe ich mehrere String-Ersetzungen in JavaScript durch?

Barbara Streisand
Barbara StreisandOriginal
2024-11-29 09:44:10711Durchsuche

How to Perform Multiple String Replacements in JavaScript?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn