采用js实现国际化的时候,通常需要传递一些参数。var pattern = "hello, {0}. welcome you come back!";
通过接口,String.format(pattern, "John");来显示
hello, John. welcome you come back!如果我现在传递参数大于1个,在方法中继续添加参数就可以,即
var pattern = "{0}-{1}-{2}";
String.format(pattern, "p1", "p2", "p3");现在的问题是,我想封装一个方法,让程序自己实现判断是一个参数还是多个参数。
function display(pattern, params){
// 这个时候,参数封装在params这个数组里
// 实现提示信息的国际化
}谢谢啦~~~
通过接口,String.format(pattern, "John");来显示
hello, John. welcome you come back!如果我现在传递参数大于1个,在方法中继续添加参数就可以,即
var pattern = "{0}-{1}-{2}";
String.format(pattern, "p1", "p2", "p3");现在的问题是,我想封装一个方法,让程序自己实现判断是一个参数还是多个参数。
function display(pattern, params){
// 这个时候,参数封装在params这个数组里
// 实现提示信息的国际化
}谢谢啦~~~
var display = function (pattern, params) {
var i = 0;
while (params.length) {
pattern = pattern.replace('{' + i + '}', params.shift());
i++;
}
return pattern.replace(/{\d+}/g, '');
};var str = display("{0},{1},{3},{10}", [1, 2, 3, 5]);
alert(str);
var display = function (pattern, params) {
var i = 0;
while (params.length) {
pattern = pattern.replace('{' + i + '}', params.shift());
i++;
}
return pattern.replace(/{\d+}/g, '');
};var str = display("{0},{1},{3},{10}", [1, 2, 3, 5]);
alert(str);
var display = function (pattern, params) {
var i = 0;
while (params.length) {
pattern = pattern.replace('{' + i + '}', params.shift());
i++;
}
return pattern.replace(/{\d+}/g, '');
};var str = display("{0},{1},{3},{10}", [1, 2, 3, 5]);
alert(str);回复了两次没有刷新
判断参数个数 arguments.length
使用的话就是agguments[index]
var display = function (pattern, params) {
return String._toFormattedString(false, [pattern].concat(params));
};
var str = display("{0},{1},{3},{10}", [1, 2, 3, 5]);
alert(str);
arguments.callee.length获得本应传入的参数
对于实际传入的参数 可以用arguments[i]来获取