2010-01-28 66 views
1

我有一個混合了文本和數字的數據列表。我使用jQuery和tablesorter plugin對它進行排序。不能正確排序的數據是設備標籤,例如「AHU-1」,「AHU-2」,「AHU-10」。問題在於,考慮到這些示例值,AHU-10將被置於AHU-1和AHU-2之間。我發現迫使'數字'排序不能解決問題。jQuery tablesorter - 對混合文本和數字進行排序

這裏是我的問題:1)有沒有人知道我可以在這種情況下使用現有的解析器?如果沒有,那麼我需要編寫自己的解析器,在這種情況下2)我應該如何編寫解析器?我應該嘗試將每個字母翻譯成數字並進行數字排序嗎?這是我最初的想法。

還有一件事,我不確定連字符是否是分隔符。 「AHU-1」也可以是「AHU1」或「AHU1」或「AHU:1」或其他。

回答

1

你需要編寫自己的解析器。你在找什麼叫做「natural sort」。有很多JavaScript自然排序算法。我找不到一個爲tablesorter插件預先編寫的程序,但使用谷歌搜索出現了不少。

+1

這是很好的信息,謝謝。有時用Google你只需要知道正確的術語(比如「自然排序」)。我會讓你知道我找到了什麼。 – Jacob 2010-01-29 21:55:01

1

假設所有你需要做的是排序爲AAA-01模式AAA-1的任何字符串,你可以做到以下幾點:

var myTextExtraction = function(node) 
{ 
    // extract data from markup and return it 
    return node.childNodes[0].childNodes[0].innerHTML 
       .replace(/([A-Z]{3}-)(\d)/,'$1-0$2'); 
} 
$(document).ready(function() 
    { 
     $("#myTable").tableSorter({textExtraction: myTextExtraction}); 
    } 
); 
+0

我從你的代碼開始,然後經歷了一堆迭代試圖讓它工作,但我沒有解決這個問題。我要研究一下iithcy建議並從那裏開始的自然排序算法。 – Jacob 2010-01-29 21:56:31

相關問題