JavaScript -替换字符串中的所有逗号

我有一个有多个逗号的字符串,字符串替换方法只会改变第一个:

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

结果: "thisnewcharis,a,test"

文档指出,默认值将替换所有,“-1”也表示替换所有,但不成功。任何想法吗?

834157 次浏览

String.prototype.replace()函数的第三个参数从来没有定义为标准,所以大多数浏览器根本不实现它。

最好的方法是使用带有g (全球< em > < / em >)标志的正则表达式

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


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

还有问题吗?

需要注意的是,正则表达式使用需要转义的特殊字符。例如,如果你需要转义一个点(.)字符,你应该使用/\./字面量,因为在正则表达式语法中,点匹配任何单个字符(行结束符除外)。

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


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

如果你需要传递一个变量作为替换字符串,而不是使用正则表达式文字,你可以创建RegExp对象和传递一个字符串作为构造函数的第一个参数。普通字符串转义规则(包含在字符串中的特殊字符\之前)将是必要的。

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


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

var mystring = "this,is,a,test"
mystring.replace(/,/g, "newchar");

使用global(g)标志

Simple DEMO

只是为了好玩:

var mystring = "this,is,a,test"
var newchar = '|'
mystring = mystring.split(',').join(newchar);