簡體   English   中英

使用全局標志將字符串文字傳遞為Javascript .replace()模式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM