我最終使後面洛斯函數自己(不包括我沒有要求的複雜性)(我的表格全是一個塊,並且每行有相同的列)
它適用於我的測試用例(和我的實際用例)第一個功能塊在功能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