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(' ','')は最初のスペースのみを置き換えます。また、コンマは分数を表すため、小数点に置き換える必要があります。だから、これを試してください(demo):

$.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

@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),"");

正規表現の意味: new RegExp(/[このリストを除く]/g)," すべてをこれに置き換える");

jsfiddle の作業: http://jsfiddle.net/rK5s4/1/

次回は、何かの複数のオカレンスを削除したいということを忘れないでください。あなたの質問からは明らかではありません。

また、組み込む前に jsfiddle に通してみてください。

于 2013-01-31T20:31:40.770 に答える