2012-01-16 66 views
0

我的工作循環與實際項(名)Javascript替換所有?

language.js更換語言標籤{lang_vname}

var lang = { 
//common 
    vname     : "name", 
    name     : "lastname", 
    adress     : "adress", 
    language    : "language", 

替換腳本

function translate(output) { 
var term = output; 
$.each(lang,function(i,l){ 
    var find = "{lang_"+i+"}"; 
    term = term.replace(find,l); 
}); 
return term;} 

我想不出如果有一種以上的表達式,如何替換輸出。它只是替換第一個,如果有第二個標籤,它會顯示標籤。 我找到了一個類似replace(/find/g,l);的解決方案,但它不在這裏工作並停止我的整個腳本。
有沒有辦法輕鬆解決這個問題?

編輯

感謝費利克斯·克林!他提供的鏈接使其工作:D我的最終結果是

function translate(output) { 
    var term = output; 
    $.each(lang,function(i,l){ 
     var find = "{lang_"+i+"}"; 
     var regex = new RegExp(find, "g"); 
     term = term.replace(regex, l); 
    }); 
    return term; 
} 

感謝您的快速幫助!

+0

什麼是輸出變量的格式和類型提供一個例子嗎? – amd 2012-01-16 10:49:54

+0

可能重複[在Javascript中,我如何執行一個全局替換字符串內'/'和'/g'?](http://stackoverflow.com/questions/542232/in-javascript-how- can-i-perform-a-global-replace-on-string-with-a-variable-insi) – 2012-01-16 10:50:00

回答

1

如果這不會爲你工作,請爲可變輸出

function translate(output) { 
    var term = output; 
    $.each(lang, function(i, l){ 
     var find = new RegExp("{lang_"+i+"}", "g"); 
     term = term.replace(find, l); 
    }); 
    return term; 

} 
+0

這樣的事例如: var output =「

」; 它的工作單一表達,但只要有兩次它不能代替 – pwittke 2012-01-16 11:27:07

+0

這對我來說是完美的! http://jsfiddle.net/r2aVP/ – noob 2012-01-16 11:58:25

+0

是的,我結合了但費利克斯克林的鏈接幫助我瞭解這個問題:) 感謝您的幫助 – pwittke 2012-01-16 12:23:16