2013-11-05 34 views
0

我有一個像字符串的代碼。JavaScript把代碼字符串中的值

JAVASCRIPT

var code = "var y1=400; \n\ 
      update : function(data) { \n\ 
      var x1 = 10;\n\ 
      var x2 = 20;\n\ 
    }"; 

我應該把一些價值在更新功能的身體,但befor X1。我想把var x0 = 0;放在函數體中。我寫了一個解決方案,

var parse_str = "update : function(data) {"; 
        var position = code.indexOf(parse_str); 
        var tmp_str = parse_str.length; 
        var tmp_num = tmp_str.length; 

        code = code.substr(0, position + tmp_str) + "var x0 = 0;" + code.substr(position + tmp_str); 

但這種方式是非常糟糕的解決方案。這是根據「update : function(data) {」這樣的字符串中的空格元素的數量。請幫我找到其他解決方案。這個解決方案很糟糕,因爲我們依賴括號之間的「update : function(data) {」中的空格。

+5

爲什麼你的JavaScript字符串中的? – Fresheyeball

+0

它是來自日誌文件 – user2894088

回答

0

使用正則表達式:

code = code.replace(/update[^{]+?{/, function(s){ return s + 'var x0 = 0;'}); 

Jsfiddle

+0

的數據不,它是錯誤的!它不工作。例如 'VAR代碼=「VAR Y1 = 400; \ n \ 更新:功能(數據)\ n \ {\ n \ 變種X1 = 10; \ n \ 變種X2 = 20; \ n \ }「;' – user2894088

+0

@ user2894088我更新了正則表達式來解決這個問題。請參閱http://jsfiddle.net/MNb58/2/ – levi