JavaScript verfügt replace()
über eine String-Objektmethode zum Ersetzen von Teilzeichenfolgen. Diese Methode kann zwei Argumente haben. Das erste Argument kann eine Zeichenfolge oder ein Muster für reguläre Ausdrücke (regExp-Objekt) sein, und das zweite Argument kann eine Zeichenfolge oder eine Funktion sein. Ein Beispiel für eine replace()
Methode mit beiden Zeichenfolgenargumenten ist unten dargestellt.
var text = 'one, two, three, one, five, one';
var new_text = text.replace('one', 'ten');
console.log(new_text) //ten, two, three, one, five, one
Beachten Sie, dass, wenn das erste Argument die Zeichenfolge ist, nur das erste Vorkommen der Teilzeichenfolge wie im obigen Beispiel ersetzt wird. Um alle Vorkommen der Teilzeichenfolge zu ersetzen, müssen Sie einen regulären Ausdruck mit einem g
(globalen) Flag versehen. Wenn Sie das globale Flag nicht angeben, wird nur das erste Vorkommen der Teilzeichenfolge ersetzt, auch wenn Sie den regulären Ausdruck als erstes Argument angeben. Ersetzen wir also alle Vorkommen von one
im obigen Beispiel.
var text = 'one, two, three, one, five, one';
var new_text = text.replace(/one/g, 'ten');
console.log(new_text) //ten, two, three, ten, five, ten
Beachten Sie, dass Sie das Muster für reguläre Ausdrücke nicht in Anführungszeichen setzen, wodurch es zu einer Zeichenfolge und nicht zu einem regExp-Objekt wird. Um eine Ersetzung ohne Berücksichtigung der Groß- und Kleinschreibung vorzunehmen, müssen Sie ein zusätzliches Flag i
angeben, das das Muster ohne Berücksichtigung der Groß- und Kleinschreibung macht. In diesem Fall ist der obige reguläre Ausdruck /one/gi
. Beachten Sie die i
hier hinzugefügte Flagge.
Wenn das zweite Argument eine Funktion hat und eine Übereinstimmung vorliegt, wird die Funktion mit drei Argumenten übergeben. Die Argumente, die die Funktion erhält, sind die Übereinstimmung, die Position der Übereinstimmung und der Originaltext. Sie müssen zurückgeben, durch was diese Übereinstimmung ersetzt werden soll. Beispielsweise,
var text = 'one, two, three, one, five, one';
var new_text = text.replace(/one/g, function(match, pos, text){
return 'ten';
});
console.log(new_text) //ten, two, three, ten, five, ten
Sie können mehr Kontrolle über den Ersatztext haben, indem Sie eine Funktion als zweites Argument verwenden.
str_replace
auch zwei Arrays gleicher Länge akzeptieren, wobei jeder String im ersten Array durch den String im zweiten Array am gleichen Index ersetzt wird. Die einzige korrekte Funktion, die ich bisher gefunden habe und die genau dieses Verhalten in Javascript nachahmt, finden Sie unter stackoverflow.com/a/5069776/296430 .