假設我有一個產品編號,產品名稱和數量的列表,這些列表正被轉儲到文本輸出中。假設所有三個字段都是可變長度的,並且我沒有在輸出中使用固定寬度字體的好處。有沒有什麼辦法可靠地計算每行插入的製表符的數量來創建一致的列?這最終會通過javascript進入電子郵件,因此在輸出中不要使用HTML。根據文本寬度在文本輸出中使用tab char創建列?
我得到的最接近的是循環遍歷列表,記錄每個字段的最大字符串長度,並根據當前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
),並且基於寬度總和代替計算選項卡但是這看起來很沉重,有點極端。 PS:請不要問這是怎麼回事,我真的希望我們能夠建立更能勝任的事情。這是一個漫長而悲傷的故事,也是後代的警示故事。