2012-01-16 64 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