Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中的Rails转换变量_Javascript_Ruby On Rails_Regex_Internationalization - Fatal编程技术网

javascript中的Rails转换变量

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

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