0

さまざまなCSVデータセットを読み取る関数を記述します。CSVを文字列の配列の配列に十分に解析できます(CSVデータを解析するにはJavascriptコードを参照してください)。

ここで、各列を実行できるようにします。すべての列が数値に変換できる場合は、数値に変換します。それ以外の場合は、文字列のままにします。ただし、そうでない場合は、文字列のままにします。

もちろん、数字はさまざまな形式で提供される可能性があり、ロケールに依存する場合もあります。これらを認識するparseFloatのような関数が欲しいのですが:

"2.0"      -> 2.0
"2"        -> 2.0
"1,532"    -> 1532 (in US at least)
"$2.00"    -> 2.0
"0.02"     -> 0.02
"2%"       -> 0.02
""         - null
"NaN"      -> NaN

"""NaN"""      -> String
"2 years old"  -> String
"ABC123"  ->  String

parseFloat(val)この目的では完全には機能しません:

parseFloat("1,523") === 1
parseFloat("2%") === 2        // could live with this
parseFloat("$2.25") === NaN

これは明らかに、ネイティブECMAscript関数が処理することを期待するには多すぎますが、これらのそれぞれについて正規表現を自分で発明するべきではないようです。

これをうまく行うライブラリがあるでしょうか?私のGoogle検索スキルはここでは失敗しているようです。

一般的な日付形式の処理はさらに優れています。

4

2 に答える 2

1

あなたや他の人が指摘したように、この問題は正規表現で解決できます。ただし、ライブラリにそれを任せたい場合は、jQuery Number Formatter ライブラリを使用すると、必要なことを実行できるはずです。数値 (パーセンテージを含む) は処理しますが、日付は処理しません: https://code.google.com/p/jquery-numberformatter/

jQuery と jshashtable の両方が必要です。

于 2013-03-14T19:24:23.033 に答える
1

シンプルな正規表現を使用してラップするだけで、非常にシンプルです

例えば:

function parseToNumeric(value) {
    return parseFloat(value.replace(/[\$,%]/g, ''));
}
于 2013-03-14T19:25:26.967 に答える