2

我对 jQuery tablesorter 和 12 345 678,91 之类的数字有疑问

$(document).ready(function() {
    $.tablesorter.addParser({ 
        id: 'thousands',
        is: function(s) { 
            return false; 
        }, 
        format: function(s) {
            return s.replace(' ','').replace(/,/g,'');
        }, 
        type: 'numeric' 
    }); 

    $("#tablesorter").tablesorter({
    headers: { 
                3: { sorter:'thousands' }, 
                4: { sorter:'thousands' }, 
                5: { sorter:'thousands' } 
            }
    });
});

输出过滤器:

-1 295,76
-331,2
-330,01
-290
0
3 986 495,06
1 942 503,09
0
0

当我替换它时: s.replace(' ','').replace(/,/g,''); 通过这个: s.replace(new RegExp(/[^0-9/A-Za-z. ]/g),""); ……甚至比以前更糟。有任何想法吗?

4

3 回答 3

3

解析器并没有替换所有的空格;usingreplace(' ','')只会替换第一个空格。此外,逗号应替换为小数点,因为它表示分数。所以,试试这个(演示):

$.tablesorter.addParser({
    id: 'thousands',
    is: function (s) {
        return false;
    },
    format: function (s) {
        return s.replace(/\s+/g, '').replace(/,/g, '.');
    },
    type: 'numeric'
});
于 2013-01-31T14:19:28.100 回答
0

Internet Explorer 将空格转换为 . 对我来说是这样的:

return s.replace(/ /g,'').replace(/\s+/g, '')
于 2013-01-31T20:12:19.143 回答
0

@Triple_6:

在实施解决方案之前了解含义:我的猜测是您不需要空格或 ,或任何纯数字。

下面的表达式表示用“”替换除数字、字母、小数点和空格以外的所有内容。

s.replace(new RegExp(/[^0-9/A-Za-z. ]/g),"");

以上是我建议的。

解决方案:

如果您不想要空格,则将其从表达式中删除。

s.replace(new RegExp(/[^0-9/A-Za-z.]/g),"");

如果你想要这个标志,那么包括那个

s.replace(new RegExp(/[^0-9/A-Za-z.+-]/g),"");

Regex 表达式的含义: new RegExp(/[Except this list]/g)," replace all with this");

工作jsfiddle:http: //jsfiddle.net/rK5s4/1/

下次请务必提及您希望删除多次出现的内容。从你的问题中不清楚。

还可以在合并之前尝试将它们通过 jsfiddle。

于 2013-01-31T20:31:40.770 回答