sdsd_(1)__wewe__(2)_sdsd__(3)_
aa = [4,5,6]
求一正则表达式,用数组中的项,替换()中的值,括号可能会是中英文的,最终得到sdsd_(4)__wewe__(5)_sdsd__(6)_
sdsd_(1)__wewe__(2)_sdsd__(3)_
aa = [4,5,6]
求一正则表达式,用数组中的项,替换()中的值,括号可能会是中英文的,最终得到sdsd_(4)__wewe__(5)_sdsd__(6)_
arr = [4, 5, 6], i = 0;'sdsd_(1)__wewe__(2)_sdsd__(3)_'.replace(/\(.?\)/g, function ($1,$2) {
return `(${arr[i++]})`
})
function replaceDatas(str,arr){
var len=arr.length;
if(len===0){return str;}
return str.replace(/([((]\s*)(\d+)(\s*[)))])/g,function(m,g1,g2,g3){
var index=(+g2);
if(index>0&&index<=len){
return g1+arr[index-1]+g3;
}
return m;
});
}
String.prototype.format = function() {
var matchIndex = 0;
var args = arguments;
return this.replace(/([((])([^))]*)([))])/g, function (text, $1, $2, $3) {
return [$1, args[matchIndex++], $3].join('')
})
}
// 英文括号:"sdsd_(4)__wewe__(5)_sdsd__(6)_"
'sdsd_(1)__wewe__(2)_sdsd__(3)_'.format(4, 5, 6);
// 中文括号:"sdsd_(4)__wewe__(5)_sdsd__(6)_"
'sdsd_(1)__wewe__(2)_sdsd__(3)_'.format(4, 5, 6);
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
2 回答4.2k 阅读✓ 已解决
3 回答2.7k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
4 回答2.5k 阅读✓ 已解决
如果你的原始内容就是你上面的那一段的话还好,感觉你上面的那段也是随机的.可能有括号,肯能也没有,可能有1个,也可能有4个 是这样吗?
如果是固定的三个括号
随机的话
其实和另一个答案差不多了.不过随机的话,需要在替换前做一个判断,如果 aa 没有足够的元素,是否还需要继续替换,或者,在 replace 的里面的函数中加一个判断,如果 i的值已经大于等于 aa 的长度之后,直接返回 入参 args 不做替换就好