2009-07-22 77 views
0

我有一個具有2個屬性的對象數組:鍵和值。我有一個帶有與對象Keys相對應的佔位符的文本塊。我想用對應的鍵替換佔位符與對象的相應值。JavaScript替換問題

我有以下代碼:

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); 
} 

我在RegExLib.com下的JavaScript測試圖案上,並與它們在「[子的形式中的佔位符的所有實例回來:KeyText ]」。我還確保了鍵和值能夠正確迴歸。我也遍歷了生成的各種表達式,並且生成的模式是準確的。

上述代碼導致text = text...行出現「內存不足異常」如果我刪除了該賦值,則不會發生任何操作。

任何想法,我錯了做這個替換?

+0

`#textblock`的內部html有多大? – tj111 2009-07-22 18:49:37

+0

如果用普通的for循環替換每個迭代器,它還會發生嗎? – 2009-07-22 18:56:57

回答

0

我看到的第一件事就是你沒有逃避你的反斜槓。

var expression = new RegExp("\\[sub:" + item.Key + "\\]", "g"); 
3

如何使用join和split來防止內存錯誤?它將顯着節省內存開銷,因爲它不必使用正則表達式多次分析整個字符串,而只需使用標準字符串方法。

text = text.split("[sub:"+item.Key+"]").join(item.Value)