我最终使后面洛斯函数自己(不包括我没有要求的复杂性)(我的表格全是一个块,并且每行有相同的列)
它适用于我的测试用例(和我的实际用例)第一个功能块在功能align
,它返回第二个块。
在CoffeeScript的:
align = (d)->
b = []
l = []
$.each d.split(/\n/), ->
a = []
$.each this.split(/(\t+|\s\s+)/), ->
if this.match /\w/
a.push this.toString()
if l[a.length-1]? < this.length then l[a.length-1] = this.length
b.push a
pad = (txt, len)->
while (txt.length<len)
txt += " "
txt
o = "\n"
$.each b, ->
$.each this, (i)->
o += pad this.toString(), l[i]
o += "\t"
o += "\n"
o
编译的JavaScript:
var align;
align = function(d) {
var b, l, o, pad;
b = [];
l = [];
$.each(d.split(/\n/), function() {
var a;
a = [];
$.each(this.split(/(\t+|\s\s+)/), function() {
if (this.match(/\w/)) {
a.push(this.toString());
if ((l[a.length - 1] != null) < this.length) {
return l[a.length - 1] = this.length;
}
}
});
return b.push(a);
});
pad = function(txt, len) {
while (txt.length < len) {
txt += " ";
}
return txt;
};
o = "\n";
$.each(b, function() {
$.each(this, function(i) {
o += pad(this.toString(), l[i]);
return o += "\t";
});
return o += "\n";
});
return o;
};
我归巢有弹性制表位,在那里我可以给它纯文本库,并把它输出松紧列输出。我找不到弹性制表符的JavaScript实现。如果没有,我想用一个不同的库 - 几十年来肯定有很多,但我找不到一个JavaScript库,用于将制表符分隔的数据对齐到固定宽度的列中。 – 2012-07-11 14:28:37
我没有看到一个快速搜索后,但它似乎相对简单的完成你自己。 – Wiseguy 2012-07-11 15:56:59