2010-01-28 75 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

相关问题