带有关键字参数的Javascript字符串

时间:2013-06-10 21:46:49

标签: javascript string parameters keyword

我很想念轨道上ruby上的一个简单功能:字符串关键字参数,如下所示:

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

在javascript中,你必须总结许多字符串,使代码变得很难写,而且很难写。

这是一个很好的图书馆吗?我对sprintf这样的东西不感兴趣。

2 个答案:

答案 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!'