2014-01-08 23 views
0

假設我有一個產品編號,產品名稱和數量的列表,這些列表正被轉儲到文本輸出中。假設所有三個字段都是可變長度的,並且我沒有在輸出中使用固定寬度字體的好處。有沒有什麼辦法可靠地計算每行插入的製表符的數量來創建一致的列?這最終會通過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/

我簡要地考慮映射每個公共鍵盤字符「寬度值」(例如A1i0.5),並且基於寬度總和代替計算選項卡但是這看起來很沉重,有點極端。 PS:請不要問這是怎麼回事,我真的希望我們能夠建立更能勝任的事情。這是一個漫長而悲傷的故事,也是後代的警示故事。

回答

0

您使用的任何系統對於管理電子郵件中的字體間距都將不可靠,特別是因爲不同的機器可能甚至沒有相同的字體。你受限於不同的系統會有不同的字體,我相信你知道,這些都是不同的大小。 除非您使用HTML電子郵件,否則您幾乎沒有選擇,我相信除非您計算最大字體的「最大尺寸」。但即使如此,窗戶寬度也可以完全消除。

相關問題