为Javascript寻找一种'sprintf'函数,我发现这个小函数既简单又可以实现我想要的功能:
function sprintf(format) {
var args = Array.prototype.slice.call(arguments, 1);
var i = 0;
return format.replace(/%s/g, function() {
return args[i++];
});
}
(原始来源:https://gist.github.com/rmariuzzo/8761698)
问题是我想在一个用Typescript编写的Angular 4应用程序中使用这个函数,所以我不能调用它,因为编译器抱怨参数的数量与函数所需的不匹配。 / p>
我知道有一些Typescript等价物(f.i。https://github.com/alexei/sprintf.js)但需要安装一个带有npm的模块,并且比我需要的更复杂。
我从未在Typescript中使用多个参数函数(除了在可选参数上使用'?'之外)所以我不知道如何调整此函数以用于Angular应用程序。
有什么想法吗?谢谢!
答案 0 :(得分:1)
您可以使用rest parameters:
function sprintf(format, ...args) {
var i = 0;
return format.replace(/%s/g, function() {
return args[i++];
});
}