c++ string replace_String.prototype.replaceAll 替换字符串新方法

0a937926fc808aac5e51a012365b4ca8.png
通常我们使用JavaScript处理字符串的时候会使用replace方法。String.prototype.replace(searchValue, replacement)指定字符串及所需替换为某一字符串,最后返回一个被替换过的字符串。那么,接下来看看关于replaceAll()方法。
String.prototype.replaceAll 替换字符串新方法​www.deathghost.cn
2aae664726ac9efa8f0786fe2ef38eb3.png

原始方法

使用replace()方法后,我们常见的一个问题就是replace()不能替换所有指定的字符串。因为它仅替换第一次出现的子字符串。

'abbc'.replace('b', '_');
// 输出则是: "a_bc"
'       '.replace(' ', ' ')
// 输出:       

我们可以看到仅替换了第一个字符串。那么,对于开发人员通常会使用带有global(g)标志的正则表达式进行处理。

'       '.replace(/ /g, ' ')
// 输出:"       "

对于前端开发人员而言,这是一种方法,但若复杂一点,很容出错,也比较麻烦。

另外一种方法就是使用stringObject.split(separator,howmany)结合arrayObject.join(separator)方法处理。

// 如:将中间的加号“+”替换为空。
's=a+b+c'.split('+').join(' ');
// 则输出:"s=a b c"
'       '.split(' ').join(' ')
"       "

看上去也还不错,但总感觉别扭,拆分后又合并连接起来。

c1a3bc6286012060f124e0719c32c68c.png

接下来,我们了解下新方法。

String.prototype.replaceAll 新方法

新方法replaceAll()可以解决上面所述问题,字面意思我们也可以理解,并提供了一种简单的机制来执行全局子字符串替换。

'       '.replaceAll(' ', ' ')
// 输出:"       "
's=a+b+c'.replaceAll('+', ' ');
// => "s=a b c"

为了与现有API保持一致,其String.prototype.replaceAll(searchValue, replacement)处理方式与String.prototype.replace(searchValue, replacement)完全相同。

因此,String.prototype.replaceAll通过提供对全局字符串替换,而无需使用正则表达式或其他解决方法。

特殊替换方式

// 第一种
'abcde'.replaceAll('c', '$$')
// 第二种
'abcde'.replaceAll('c', '$&')

结果是:

// 第一种输出结果
"ab$de" 而非 "ab$$de"
// 第二种输出结果
"abcde" 而非 "ab$&de"

浏览器String.prototype.replaceAll支持情况

现代浏览器最新版均可支持,具体查看这里。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值