Grundlegendes zum selektiven Ersetzen von JavaScript mit „Replace“
Wenn Sie die Methode „replace()“ von JavaScript zum Bearbeiten von Zeichenfolgen verwenden, ist Ihnen möglicherweise aufgefallen, dass diese oft nur ersetzt die erste Instanz eines bestimmten Zeichens oder Musters. Dieses Verhalten kann rätselhaft sein, insbesondere wenn Sie beabsichtigen, alle Instanzen zu ersetzen.
Beispiel:
Bedenken Sie den folgenden Codeausschnitt:
var date = $('#Date').val(); // "12/31/2009" var id = 'c_' + date.replace("/", ''); // "c_1231/2009"
Wie Sie bemerkt haben, wurde durch die Ersetzung nur die erste Instanz des /-Zeichens entfernt, während die zweite Instanz unverändert blieb. Um zu verstehen, warum, müssen wir uns mit der Funktionsweise der Methode replace() befassen.
RegExp und Global Flag:
replace() verwendet einen regulären Ausdruck (RegExp ), um das Zielmuster innerhalb einer Zeichenfolge zu finden. Standardmäßig wird nur das erste Vorkommen abgeglichen. Um alle Instanzen zu ersetzen, müssen wir das globale Flag mit dem Modifikator „g“ angeben.
So ersetzen Sie global:
Es gibt zwei Möglichkeiten, das globale Flag anzuwenden Flag:
Verwendung des g-Flags im regulären Ausdruck:
var id = 'c_' + date.replace(new RegExp("/", "g"), '');
Verwendung des g-Flags als zweites Argument für replace() :
var id = 'c_' + date.replace(/\//g, '');
Beide Methoden weisen replace() an, alle Instanzen des angegebenen Zeichens oder Musters zu suchen und zu ersetzen, wie folgt:
var id = 'c_' + date.replace(/\//g, ''); // "c_12312009"
Das obige ist der detaillierte Inhalt vonWarum ersetzt die Methode replace() von JavaScript manchmal nur die erste Instanz eines Musters?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!