String.prototype.printf = function (obj) {
var useArguments = false;
var _arguments = arguments;
var i = -1;
if (typeof _arguments[0] == "string") {
useArguments = true;
}
if (obj instanceof Array || useArguments) {
return this.replace(/\%s/g,
function (a, b) {
i++;
if (useArguments) {
if (typeof _arguments[i] == 'string') {
return _arguments[i];
}
else {
throw new Error("Arguments element is an invalid type");
}
}
return obj[i];
});
}
else {
return this.replace(/{([^{}]*)}/g,
function (a, b) {
var r = obj[b];
return typeof r === 'string' || typeof r === 'number' ? r : a;
});
}
};
在包含它之后,这行代码将返回Hello I am foo bar
console.log("Hello I am " + "%s %s".printf(["foo", "bar"])); //returns foo bar
2条答案
按热度按时间2o7dmzc51#
有一个很棒的
String.prototype.printf()
函数,我在一个网站上找到了它,它和你想要实现的很相似,这是你想要添加到javascript页面的整个原型。在包含它之后,这行代码将返回
Hello I am foo bar
有关详细信息,请参阅here
如果您使用的是Node.JS
如果你使用的是Node.js,你可以使用util节点模块,并使用
util.format()
函数。请看下面的代码。mnemlml82#
我找不到相关文档,但现在似乎已将其内置到console.log中:
console.log( "native %s", "support" )