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

IT技术 javascript string replace substitution
2021-03-12 22:08:21

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

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

结果"thisnewcharis,a,test"

文档说明默认替换全部,“-1”也表示替换全部,但是不成功。有什么想法吗?

3个回答

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

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

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

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

还有问题吗?

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

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

您能否详细描述一下 /"Seprator"/g
2021-04-15 22:08:21
@chows2603 使用/\\/g它会起作用。
2021-04-23 22:08:21
优秀的答案。/g 对逗号进行全局搜索并将其替换为整个字符串。它是这样工作的,我说得对吗??
2021-04-27 22:08:21
不能在 TypeScript 中工作。
2021-04-28 22:08:21
@MSTdev 这是带有标志的典型正则表达式g(又名“全局搜索”)。算法很简单:正则表达式在给定的字符串中查找所有匹配项(这里是逗号)。有关 JavaScript中正则表达式的更多信息,您可以在MDN 中找到
2021-05-06 22:08:21

纯娱乐:

var mystring = "this,is,a,test"  
var newchar = '|'
mystring = mystring.split(',').join(newchar);
@CSchwarz - 我正准备为您进行编辑,但后来想起许多JS 分号是可选的,包括这些。无论如何,许多开发人员都非常坚决地坚持要包含它们。如果我 100% 确定,我对编辑答案没有任何疑虑(例外:我花了 2 天时间鼓起勇气编辑Atwood的答案之一,哈哈),但在这种情况下,我会保持原样。您将能够以2000 代表进行编辑😉
2021-04-26 22:08:21
它比带有 /g 的正则表达式慢/快吗?
2021-04-30 22:08:21
@SrednyMCasanova 那是因为在正则表达式中,句点是一个特殊字符,您应该使用\.示例将其转义var mystring = "this.,.is.,.a.,.test"; mystring.replace(/\./g , "|");请参阅MDN RegExp - 正则表达式中的特殊字符含义
2021-05-05 22:08:21
这是一个很好的答案,我replace用点 '.'测试了该功能。但它没有按预期工作,但你的回答使它很好
2021-05-11 22:08:21
这在没有正则表达式的情况下工作,全局变量和特殊字符(例如:'['+variable+']')。天才。
2021-05-15 22:08:21
var mystring = "this,is,a,test"
mystring.replace(/,/g, "newchar");

使用 global( g) 标志

简单的演示

@DineshJain 在正则表达式中,点 ( .) 有一个特殊的含义,它意味着每个字符,和所有其他特殊字符一样,需要用` if you want to use their value "literally". if you want to replace only dots you need to use \.`进行转义
2021-04-15 22:08:21
不适用于 var mystring = "this,is.a.test" mystring.replace(/./g, ">"); 它替换整个字符串
2021-04-23 22:08:21
我添加了 String.prototype.replaceAll = function(search, replacement) { var target = this; return target.replace(new RegExp(search, 'g'), replacement); }; 解决了我的问题@gdoron 谢谢
2021-05-14 22:08:21