假设我有一个产品编号,产品名称和数量的列表,这些列表将被转储到文本输出中。假设所有三个字段都是可变长度的,我在输出中没有固定宽度字体的好处。有没有办法可靠地计算每行插入的标签数量以创建一致的列?这最终通过javascript进入电子邮件,因此假设输出中没有HTML用法。
我得到的最接近的是循环遍历列表,记录每个字段的最大字符串长度,并根据当前strlen和max strlen之间的差异编写函数来估计制表符的数量。假设6个字符大致相当于一个标签。这让我很接近,但它在极端情况下崩溃了。
function cTab(strLen, col){
var i, tabs = "";
for(i=1;i<=Math.floor((max[col]-strLen)/6)+2;i++){ tabs+= "\t"; }
return tabs;
}
在这里小提琴:http://jsfiddle.net/UA6QF/
我简单地考虑将每个常用键盘字符映射到“宽度值”(例如A
将是1
,i
将是0.5
),并且基于计算制表符宽度总和而不是strlens,但这似乎很重,有点极端。
答案 0 :(得分:0)
您使用的任何系统都不可靠,无法控制电子邮件中的字体间距,特别是因为不同的计算机甚至可能没有相同的字体。你受限于这样一个事实:不同的系统会有不同的字体,正如我相信你知道的那样,它们的大小不同。 除非你使用HTML电子邮件,否则你几乎没有选择,我相信除非你计算出最大字体的“最大尺寸”。但即便如此,窗口宽度也可以完全消除。