关于javascript:替换字符串中的所有逗号

JavaScript - Replace all commas in a string

本问题已经有最佳答案,请猛点这里访问。

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

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

结果:"thisnewcharis,a,test"

文档显示默认值将全部替换,而"-1"也表示全部替换,但它不成功。有什么想法吗?


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

最好的方法是使用带有EDOCX1(global)标志的正则表达式。

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

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

还有问题吗?

需要注意的是,正则表达式使用需要转义的特殊字符。例如,如果需要转义点(.字符,则应使用/\./字面值,就像在regex语法中,点匹配任何单个字符(行终止符除外)。

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

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

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

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

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


只是为了好玩:

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


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

使用全局(g标志

简单演示