基于以下字符串
for(var i=0;i<${MyVar}.length;i++){ alert(${MyVar}[i]); }
如何在字符串的开头${
和结尾}
处删除for(var i=0;i<MyVar.length;i++){ alert(MyVar[i]); }
,以便可以这样使用它?
var script = document.createElement("script");
script.innerHTML = "var ... "; // variables
script.innerHTML += transformCode(code); // code injected
document.getElementsByTagName("head")[0].append(script);
我正在系统中创建一个组件来注入javascript代码并执行,但是我需要将系统变量替换为javascript变量。
function variableTransform(variables){
var html = "";
for(var key in variables) {
html += "var "+key+" ='"+variables[key]+"';\n";
}
//alert(html);
return html;
}
我已经完成了从对象数组创建变量的工作,就像这样:
-webkit-border-radius: 5px;
答案 0 :(得分:5)
使用
.replace(/\$\{(\w+)\}/g, '$1')
请参见proof
说明
--------------------------------------------------------------------------------
\$ '$'
--------------------------------------------------------------------------------
\{ '{'
--------------------------------------------------------------------------------
( group and capture to \1:
--------------------------------------------------------------------------------
\w+ word characters (a-z, A-Z, 0-9, _) (1 or
more times (matching the most amount
possible))
--------------------------------------------------------------------------------
) end of \1
--------------------------------------------------------------------------------
\} '}'
JavaScript:
const text = 'for(var i=0;i<${MyVar}.length;i++){ alert(${MyVar}[i]); if(${FooBar}) { ${Bazz}(); } }';
console.log(text.replace(/\$\{(\w+)\}/g, '$1'));
答案 1 :(得分:0)
它们是字符串文字,因此让它为您完成工作。
var variables = 'var FooBar = "Chicken"; var Bazz = "Tuna"; var MyVar = "Dog";';
var codeString = "for(var i=0;i<${MyVar}.length;i++){ alert(${MyVar}[i]); if(${FooBar}) { ${Bazz}(); } }";
var temp = (new Function(variables + " return `" + codeString + "`")());
console.log(temp);