Der dritte Parameter der String.prototype.replace()
Funktion wurde nie als Standard definiert, so dass die meisten Browser sie einfach nicht implementieren. Sie wurde schließlich entfernt und ersetzt durch String.prototype.replaceAll()
(siehe unten).
Moderne Lösung (2022)
使用方法 String.prototype.replaceAll()
. Sie wird jetzt in allen Browsern und NodeJS unterstützt.
var myStr = "this,is,a,test";
var newStr = myStr.replaceAll(",", "-");
console.log( newStr ); // "this-is-a-test"
Die alte Methode ist die Verwendung einer regulärer Ausdruck をもって g
( weltweit ) Flagge
var myStr = "this,is,a,test";
var newStr = myStr.replace(/,/g, "-");
console.log( newStr ); // "this-is-a-test"
Haben Sie Probleme mit regulären Ausdrücken?
Es ist wichtig zu beachten, dass reguläre Ausdrücke Sonderzeichen, die escaped werden müssen . Wenn Sie zum Beispiel einen Punkt ( .
), sollten Sie das Zeichen /\./
Literal, da in der Regex-Syntax ein Punkt auf jedes einzelne Zeichen passt (außer auf Zeilenabschlüsse).
Wenn Sie eine Variable als Ersetzungszeichenfolge übergeben müssen, können Sie anstelle eines Regex-Literal eine RegExp
Objekt und übergibt eine Zeichenkette als erstes Argument. Die üblichen Escape-Regeln (Voranstellen von Sonderzeichen mit \
wenn sie in einer Zeichenkette enthalten sind) notwendig sein wird.
function escapeRegex(str) {
return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string
}
var myStr = "this.is.a.test";
var reStr = escapeRegex(".");
var newStr = myStr.replace(new RegExp(reStr, "g"), "-");
console.log( newStr ); // "this-is-a-test"