我很想念轨道上ruby上的一个简单功能:字符串关键字参数,如下所示:
"the key '%{key}' has a value of '%{value}'" % {:key => 'abc', :value => 5}
在javascript中,你必须总结许多字符串,使代码变得很难写,而且很难写。
这是一个很好的图书馆吗?我对sprintf这样的东西不感兴趣。
答案 0 :(得分:3)
String.prototype.format = function(obj) {
return this.replace(/%\{([^}]+)\}/g,function(_,k){ return obj[k] });
};
"the key '%{key}' has a value of '%{value}'".format({ key:'abc', value:5 });
答案 1 :(得分:0)
你可以制作一个基本的数组类型格式化程序:
String.prototype.format = function(args) {
var str = this,
idxRx = new RegExp("{[0-9]+}", "g");
return str.replace(idxRx, function(item) {
var val = item.substring(1, item.length - 1),
intVal = parseInt(val, 10),
replace;
replace = args[intVal];
return replace;
});
};
用法:
'{1} {0} and {2}!'.format(["collaborate", "Stop", "listen"])
// => 'Stop collaborate and listen!'