我有一个表格,其中包含一组混合文本和数字的数据。我正在使用jQuery和tablesorter plugin对其进行排序。无法正确排序的数据是设备标签,例如“AHU-1”,“AHU-2”,“AHU-10”。问题是,给定这些示例值,AHU-10将被放置在AHU-1和AHU-2之间。我发现强制“数字”排序并不能解决问题。
这是我的问题:1)有没有人知道我可以在这种情况下使用的现有解析器?如果没有,那么我需要编写自己的解析器,在这种情况下2)我应该如何编写解析器?我应该尝试将每个字母翻译成一个数字并进行数字排序吗?这是我最初的想法。
还有一件事,我不确定连字符是否是分隔符。 “AHU-1”也可能是“AHU1”,或“AHU 1”,或“AHU:1”,或其他。
答案 0 :(得分:1)
假设您需要做的就是将AAA-1模式的任何字符串排序为AAA-01,您可以执行以下操作:
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} );
}
);
答案 1 :(得分:1)
您需要编写自己的解析器。您要找的是“natural sort”。有很多javascript自然排序算法。我找不到一个为tablesorter插件预先写好的内容,但谷歌搜索出现了不少。