我有一组具有2个属性的对象:Key和Value。我有一个带有占位符的文本块,对应于对象Keys。我想用匹配键的对象替换占位符和相应的值。
我有以下代码:
function LoadReplacementData(replacementData)
{
var text = $("#textblock").html();
$.each(replacementData, function(index, item)
{
var expression = new RegExp("\[sub:" + item.Key + "\]", "g");
text = text.replace(expression, item.Value);
});
$("#textblock").html(text);
}
我已经在JavaScript下在RegExLib.com上测试了模式,它返回了占位符的所有实例,形式为“[sub:KeyText]”。我还确保键和值正确回归。我还循环了生成的各种表达式,结果模式是准确的。
上面的代码导致text = text...
行的“内存不足”如果我删除了作业,则没有任何反应。
有什么想法我做错了吗?
答案 0 :(得分:3)
使用join和split来防止内存错误怎么样?它将显着节省内存开销,因为它不必使用正则表达式多次解析整个字符串,只需标准字符串方法。
text = text.split("[sub:"+item.Key+"]").join(item.Value)
答案 1 :(得分:0)
我看到的第一件事是你没有逃脱你的反斜杠。
var expression = new RegExp("\\[sub:" + item.Key + "\\]", "g");