如何查找字符串中的所有指定子串并将其替换为带编号的子串?
实现思路
你可以直接用字符串replace方法的回调参数实现自动编号替换,不需要手动逐个处理匹配结果,逻辑如下:
- 先初始化一个编号计数器,默认从1开始
- 调用
replace方法时,第一个参数传入你匹配Test所用的正则(必须加全局匹配标识g) - 第二个参数传入回调函数,每次匹配到目标子串时回调会自动触发,在回调内返回拼接了当前计数器的新字符串,再把计数器自增1即可
代码示例
// 原始字符串 const originStr = 'Test abcdeftTest 12Test35' // 初始化编号计数器 let num = 1 // 执行替换 const result = originStr.replace(/Test/g, () => `Test${num++}`) // 输出结果:Test1 abcdeftTest2 12Test335 console.log(result)
补充说明
如果你的匹配规则不是固定的Test,只要把replace的第一个正则参数改成你之前用match方法时的正则即可,只要保证正则带g全局标识,回调就会按照匹配到的顺序依次执行,编号也会按顺序生成。
内容的提问来源于stack exchange,提问作者g_b
相关产品推荐
相关产品推荐

