jQuery tablesorter – 使用混合文本和数字对列进行排序

我有一个表格,其中包含一组混合文本和数字的数据。 我正在使用jQuery和tablesorter插件对其进行排序。 无法正确排序的数据是设备标签,例如“AHU-1”,“AHU-2”,“AHU-10”。 问题是,给定这些示例值,AHU-10将被放置在AHU-1和AHU-2之间。 我发现强制“数字”排序并不能解决问题。

这是我的问题:1)有没有人知道我可以在这种情况下使用的现有解析器? 如果没有,那么我需要编写自己的解析器,在这种情况下2)我应该如何编写解析器? 我应该尝试将每个字母翻译成一个数字并进行数字排序吗? 这是我最初的想法。

还有一件事,我不确定连字符是否是分隔符。 “AHU-1”也可以是“AHU1”,或“AHU 1”,或“AHU:1”,或其他。

你需要编写自己的解析器。 你在寻找什么被称为“ 自然排序 ”。 那里有很多javascript自然排序算法。 我找不到一个为tablesorter插件预先写好的内容,但谷歌搜索出现了不少。

假设您需要做的就是将AAA-1模式的任何字符串排序为AAA-01,您可以执行以下操作:

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