JavaScript Stringformat与数组

我正在使用stringformat库来格式化node.js中的string。

var stringFormat = require('stringformat'); stringFormat.extendString(); 

我试图传递一个参数数组,而不是内联,如下所示:

 var formatted = '{0}{1}'.format(params); 

代替 :

 var formatted = '{0}{1}'.format(params[0], params[1]); 

但图书馆不支持这一点。

我已经按照这个问题: nodejs-util-format-passing-an-array试试这个:

 params.unshift('{0}{1}'); String.prototype.format.apply(String.prototype, params); 

并且:

 var i = -1; '{0}{1}...'.format(function() { i++; return params[0]; }); 

而且没有一个按预期工作。

有任何想法吗?

或者,如果你不想使用扩展运算符,如我在评论中提到的,你也可以在ES5中做这样的事情;

 function formatWithArray(str,arr){ var a = arr[0], b = arr[1], c = arr[2], d = arr[3]; return str.format(a,b,c,d); } var formatted = formatWithArray('{0}{1}',params); 

应该工作罚款多达4个参数,虽然在你的具体情况下,最后两个(C和D)将是未定义的。 我希望stringFormat库不会打扰多余的参数。

你可以编写自己的格式扩展如下所示:

 String.prototype.myFormatString = function(_array){ var s = _array[0]; for (var i = 0; i < _array.length - 1; i++) { var reg = new RegExp("\\{" + i + "\\}", "gm"); s = s.replace(reg, _array[i + 1]); } return s; } 

并在你的代码中调用它:

 var formatted = '{0}{1}'.myFormatString(params); 

希望有所帮助。