[英]Passing a string literal as Javascript .replace() pattern with global flag
我有以下遍历“ templateOverrides”的数组。 DPGlobal.template
是我需要覆盖的原始模板。 我的问题是我需要将g
标志传递给var newTemplate = ...
行上的.replace()
方法。 只要我能够一次动态地迭代并覆盖一个模板片段,它就可以正常工作,但是不会传递g
标志。 我主要是想知道什么是最干燥的方法...
for ( var i in templateOverrides ) {
var thisOverride = templateOverrides[i];
var origGlobalTemplate = DPGlobal[thisOverride];
var newTemplate = DPGlobal.template.replace(origGlobalTemplate, options[thisOverride]);
DPGlobal.template = newTemplate;
i++;
}
如果通过new RegExp()
声明它,则可以将/g
修饰符包括为构造函数的第二个参数
var newTemplate = DPGlobal.template.replace(new RegExp(origGlobalTemplate,'g'), options[thisOverride]);
顺便说一句, templateOverrides
确实是Array []
还是对象{}
? 如果它是Array
,则应该使用增量for循环而不是for-in
构造,其目的是遍历对象属性。
for ( var i=0; i<templateOverrides.length; i++ ) {
var thisOverride = templateOverrides[i];
var origGlobalTemplate = DPGlobal[thisOverride];
var newTemplate = DPGlobal.template.replace(new RegExp(origGlobalTemplate,'g'), options[thisOverride]);
DPGlobal.template = newTemplate;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.