我想在一段代码上运行一个字符串替换函数,并确保代码中的所有字符串都是完整的并且使用javascript保持不变。例如,如果我有如下代码:
var a = "I am ok";
if (a == "I am ok") {
alert("That's great to know");
}
现在,我想在此代码块上运行字符串替换。但它应该只影响它的代码部分。不是双引号的字符串。可以使用正则表达式或任何其他方法来完成吗?
答案 0 :(得分:2)
为避免使用Abstract Syntax Tree (AST)类型解决方案进行代码操作时出现任何错误,最好。一个示例实现在UglifyJS2中,它是一个JavaScript解析器,缩小器,压缩器或美化工具包。
或者,如果AST超出您的特定任务的顶部,您可以使用RegEx。
但你也必须同意评论吗?
该过程可能如下所示:
"
或'
的人)或评论(以//
或/*
开头)会忽略,否则请运行替换。答案 1 :(得分:1)
您必须将函数代码放在字符串变量中,对该字符串运行正常的正则表达式操作,然后将其转换为函数:
var func = new Function('a', 'b', 'return a + b');
编辑:如果需要,使用正则表达式在双引号之间排除文本。