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

时间:2012-05-15 23:57:54

标签: javascript string replace substitution

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

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

结果"thisnewcharis,a,test"

文档指出默认值替换all,并且“-1”也表示替换all,但是不成功。有什么想法吗?

3 个答案:

答案 0 :(得分:669)

String.prototype.replace()函数的第三个参数从未被定义为标准,因此大多数浏览器根本不实现它。

最好的方法是将regular expressiongglobal)标记一起使用。

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

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

还有问题吗?

重要的是要注意,正则表达式使用special characters that need to be escaped。例如,如果您需要转义点(.)字符,则应使用/\./字面值,因为在正则表达式语法中,点匹配任何单个字符(行终止符除外)。

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

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

如果您需要将变量作为替换字符串传递,而不是使用正则表达式文字,则可以创建RegExp对象和pass a string as the first argument of the constructor

是正常的字符串转义规则(包含在字符串中时带有\的特殊字符)。

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

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

答案 1 :(得分:145)

只是为了好玩:

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

答案 2 :(得分:41)

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

使用全局(g)标记

Simple DEMO