webentwicklung-frage-antwort-db.com.de

JavaScript - Ersetzen Sie alle Kommas in einer Zeichenfolge

Ich habe eine Zeichenfolge mit mehreren Kommas, und die Methode zum Ersetzen von Zeichenfolgen ändert nur die erste:

var mystring = "this,is,a,test"
mystring.replace(",","newchar", -1)

Ergebnis: "thisnewcharis,a,test"

In der Dokumentation wird angegeben, dass der Standardwert alle ersetzt und "-1" auch angibt, dass alle ersetzt werden sollen, dies ist jedoch nicht erfolgreich. Irgendwelche Gedanken?

330
mike

Der dritte Parameter von String.prototype.replace() function wurde nie als Standard definiert, daher implementieren die meisten Browser ihn einfach nicht.

Am besten verwenden Sie regulärer Ausdruck mit g ( global ) .

var myStr = 'this,is,a,test';
var newStr = myStr.replace(/,/g, '-');

console.log( newStr );  // "this-is-a-test"

Haben Sie noch Probleme?

Es ist wichtig zu beachten, dass reguläre Ausdrücke Sonderzeichen, die maskiert werden müssen verwenden. Wenn Sie beispielsweise ein Punktzeichen (.) maskieren müssen, sollten Sie das Literal /\./ verwenden, da in der Regex-Syntax ein Punkt mit einem einzelnen Zeichen übereinstimmt (mit Ausnahme von Zeilenabschlusszeichen).

var myStr = 'this.is.a.test';
var newStr = myStr.replace(/\./g, '-');

console.log( newStr );  // "this-is-a-test"

Wenn Sie eine Variable als Ersatzzeichenfolge übergeben müssen, können Sie anstelle von Regex-Literal RegExp -Objekt erstellen und übergeben Sie eine Zeichenfolge als erstes Argument des Konstruktors . Die normalen Escape-Regeln für Zeichenfolgen (vor Sonderzeichen mit \, wenn sie in einer Zeichenfolge enthalten sind) sind erforderlich.

var myStr = 'this.is.a.test';
var reStr = '\\.';
var newStr = myStr.replace(new RegExp(reStr, 'g'), '-');

console.log( newStr );  // "this-is-a-test"
708
VisioN

Nur zum Spaß:

var mystring = "this,is,a,test"  
var newchar = '|'
mystring = mystring.split(',').join(newchar);
151
RobG
var mystring = "this,is,a,test"
mystring.replace(/,/g, "newchar");

Verwenden Sie das globale Flag (g)

Einfache DEMO

43
gdoron