【问题标题】:jQuery tablesorter - sorting a column with mixed text and numbersjQuery tablesorter - 对包含混合文本和数字的列进行排序
【发布时间】:2010-01-28 21:04:14
【问题描述】:

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

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

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

【问题讨论】:

    标签: javascript jquery tablesorter


    【解决方案1】:

    您确实需要编写自己的解析器。您要查找的内容称为“natural sort”。有很多 javascript 自然排序算法。我找不到为 tablesorter 插件预先编写的插件,但谷歌搜索出现了很多。

    【讨论】:

    • 这是很好的信息,谢谢。有时使用 Google,您只需要知道正确的术语(例如“自然排序”)。我会告诉你我发现了什么。
    【解决方案2】:

    假设您只需将模式 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} ); 
        } 
    ); 
    

    【讨论】:

    • 我从你的代码开始,然后经历了一堆迭代,试​​图让它工作,但我所做的都没有解决问题。我将研究 ithcy 建议的自然排序算法并从那里开始。
    猜你喜欢
    • 2021-04-28
    • 1970-01-01
    • 2020-03-21
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 2016-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多