javascript - Tablesorter - 按姓氏排序,忽略中间名/首选姓名

标签 javascript regex tablesorter

我目前正在使用 Mottie 版本的 tablesorter 来构建目录。我在同一个表格单元格中有一个姓名字段(名字和姓氏的组合)。大多数数据条目都很简单(名字姓氏),我设置了代码,以便通过使用以下方法交换姓氏和名字来排序:

文本提取:{ 0:函数(节点){ //交换名字和姓氏进行排序 return $.trim($(node).text() || '').replace(/(\w+)\s(\w+)/g,'$2 $1'); } }

不幸的是,有一些人有自己喜欢的名字,并且会出现在表格中,如下所示:

[名字(首选名称)姓氏]

排序最终仅按名字排序。

例如,它排序如下:

亚历克斯·亚当斯
罗伯特(鲍勃)罗弗
布鲁斯·布莱克
凯特琳·克鲁兹
亚当(戴夫)弗朗西斯
伊莱恩·埃文斯

但我希望它只使用姓氏,例如:

亚历克斯·亚当斯
布鲁斯·布莱克
凯特琳·克鲁兹
伊莱恩·埃文斯
亚当(戴夫)弗朗西斯
罗伯特(鲍勃)罗弗

我并没有完全掌握正则表达式,所以我不确定是否有一种简单的方法可以使其始终按姓氏排序。

任何帮助(包括有关此替换的一些解释。(正则表达式)如何工作,将不胜感激!

谢谢!

最佳答案

我不会使用 textExtraction 方法,因为它适用于所有表格单元格。

相反,尝试这个解析器。它使用数组操作将姓氏移到前面 ( demo )

$(function() {

  $.tablesorter.addParser({
    id: 'last-name',
    is: function() {
      return false;
    },
    format: function(str) {
      var parts = (str || '').split(/\s+/),
        last = parts.pop();
      parts.unshift(last);
      return parts.join(' ');
    },
    // set type, either numeric or text
    type: 'text'
  });

  $('table').tablesorter({
    theme: 'blue'
  });
});

不要忘记添加类名来设置解析器:

<th class="sorter-last-name">Name</th>

关于javascript - Tablesorter - 按姓氏排序,忽略中间名/首选姓名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38209618/

相关文章:

Javascript:即使在同一页面上具有不同 anchor 的后退按钮后也运行脚本

java - 从 Apache 机器上的 Tomcat 服务器检索文件

jquery - TableSorter 初始可见行数的问题

javascript - 如何修复具有粘性标题以及排序和搜索的表格的大小?

javascript - 函数调用 - this == Window 并且不是未定义的

javascript - 外部 js 文件中的 Symfony 2 翻译

javascript - 左右箭头键的按键代码是什么?

python - 如何删除 python 中字符串的最后一个字符?

regex - 查找和替换以模式开头的行

jQuery 表排序器 : custom parser on dynamic table