0

我非常怀念 ruby​​ on rails 上的一个简单功能:字符串关键字参数,如下所示:

"the key '%{key}' has a value of '%{value}'" % {:key => 'abc', :value => 5}

在 javascript 中,您必须对许多字符串求和,从而使代码难看且难以编写。

有没有一个好的图书馆?我对 sprintf 之类的东西不感兴趣。

4

2 回答 2

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 });
于 2013-06-10T22:00:08.347 回答
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!'
于 2013-06-10T22:02:49.137 回答