例如有一个文本'abc{xdf}efg{dfg}ijk{232}'
正则是{.*?}
,匹配每一个{}里面的东西
现在我有一个数组['d','h','l']
请问怎么才能用数组按顺序替换掉{}里的内容,变成abcdefghijkl
注意实际情况是数组的长度是未知的,也就是说正则匹配到的个数是未知的。
例如有一个文本'abc{xdf}efg{dfg}ijk{232}'
正则是{.*?}
,匹配每一个{}里面的东西
现在我有一个数组['d','h','l']
请问怎么才能用数组按顺序替换掉{}里的内容,变成abcdefghijkl
注意实际情况是数组的长度是未知的,也就是说正则匹配到的个数是未知的。
var format = 'abc{xdf}efg{dfg}ijk{232}';
var arr = ['d','h','l'];
for(var i=0; i < arr.length; i++){
format = format.replace(/\{.*?\}/, arr[i]);
}
console.log(format);
var str = 'abc{xdf}efg{dfg}ijk{232}';
var arr = ['d', 'h', 'l'];
function replace(str, arr){
var i = 0;
return str.replace(/({.*?})/g, (all,match) => {
return match = arr[i++];
})
}
replace(str, arr);
27 回答13k 阅读
8 回答3.5k 阅读✓ 已解决
6 回答1.3k 阅读✓ 已解决
5 回答5.3k 阅读✓ 已解决
4 回答1.6k 阅读✓ 已解决
3 回答1.7k 阅读
4 回答2.3k 阅读✓ 已解决
但我猜你需要的是字符串模板:
https://segmentfault.com/a/1190000004428305