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);
希望有所帮助。