JavaScript 字符串 replaceAll

166 阅读1分钟

在一个较大的字符串中替换文本的子串,在JavaScript中一直是误导性的。 几年前,我写过《在JavaScript中替换一个字符串的所有出现》,它仍然是我阅读量最大的文章之一。

混乱在于replace ,它只替换子串的第一次出现,而不是所有的出现。 比如说。

'yayayayayaya'.replace('ya', 'na');
// nayayayayaya

要替换一个子串的所有实例,你已经需要使用正则表达式。

'yayayayayaya'.replace(/ya/g, 'na');
// nananananana

使用正则表达式当然很强大,但是说实话--很多时候我们只是想替换一个简单的子串的所有实例,不应该要求使用正则表达式。

幸运的是,今年JavaScript语言为我们提供了String.prototype.replaceAll ,这是一种不使用正则表达式进行替换的方法。

'yayayayayaya'.replaceAll('ya', 'na');
// nananananana

有时,一个API以一种混乱的格式存在,标准机构只需要改善这种情况。 我很高兴他们用replaceAll