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

2022-08-29 23:22:48

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

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

结果"thisnewcharis,a,test"

文档指示默认值将全部替换,并且“-1”也指示全部替换,但未成功。有什么想法吗?


答案 1

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

最好的方法是使用带有(全局)标志的正则表达式g

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"

答案 2

只是为了好玩:

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