javascript中的Rails转换变量
Rails提供了将变量传递到转换的功能: 我希望能够在客户机上使用这些文件,即Javascript。这些文件已经翻译成JSON,但我希望能够在翻译的字符串中设置参数 例如:javascript中的Rails转换变量,javascript,ruby-on-rails,regex,internationalization,Javascript,Ruby On Rails,Regex,Internationalization,Rails提供了将变量传递到转换的功能: 我希望能够在客户机上使用这些文件,即Javascript。这些文件已经翻译成JSON,但我希望能够在翻译的字符串中设置参数 例如: 篮子ID%{basket\u ID}中有%{apple\u count}个苹果。 其中,%{apple\u count}和%{basket\u id}将替换为参数 这是我想在JS中使用的调用(即我想实现origStr): var str=replaceParams(origStr,{apple\u count:5,bask
篮子ID%{basket\u ID}中有%{apple\u count}个苹果。
其中,%{apple\u count}
和%{basket\u id}
将替换为参数
这是我想在JS中使用的调用(即我想实现origStr
):
var str=replaceParams(origStr,{apple\u count:5,basket\u id:“aaa”})代码>
我猜最好的策略是使用正则表达式。如果是,请提供一个好的正则表达式。但我愿意听取任何其他选择 如果您总是提供所有参数(即永远不要忽略它们),并且没有参数在模板中多次使用,则无需使用正则表达式
function replaceParams(origStr, params) {
for (var p in params) origStr = origStr.replace("%{" + p+ "}", params[p]);
return origStr;
}
在其他情况下,如果只需要正则表达式,则使用回调替换很容易:
function replaceParams(origStr, params) {
return origStr.replace(/%{(\w+)}/g, function(m, pName){
return params[pName];
// this will return "undefined" if you forget to pass some param.
// you may use `params[pName] || ""` but it would make param's value `0` (number)
// rendered as empty string. You may check whether param is passed with
// if (pName in params)
});
}