3

Javascriptを使用して.csvファイルの行数をカウントする方法を考えています。誰かが私に指示できる便利なヒントやリソースはありますか?

4

4 に答える 4

8

線の意味によって異なります。改行の数が単純な場合、Robustoの答えは問題ありません。

を表すCSVデータの行数を知りたい場合は、CSVフィールド自体に改行が含まれている可能性があるため、少し難しい場合があります。

field1,"field
two",field3

...少なくともRFC4180で定義されているCSVでは1行です。(これはCSVの悪化する機能の1つであり、非標準のバリアントが非常に多くあります。RFC自体はゲームに非常に遅れていました。)

したがって、その場合に対処する必要がある場合は、基本的に各フィールドを解析する必要があります。

フィールドは生の場合もあれば、(必要に応じて\nまたはが含まれている場合は,)引用符で囲まれ、"二重引用符で表される場合もあります。したがって、1つのフィールドの正規表現は次のようになります。

"([^"]|"")*"|[^,\n]*

したがって、行全体について(空でない場合):

("([^"]|"")*"|[^,\n]*)(,("([^"]|"")*"|[^,\n]*))*\n

そしてそれらの数を取得するには:

var rowsn= csv.match(/(?:"(?:[^"]|"")*"|[^,\n]*)(?:,(?:"(?:[^"]|"")*"|[^,\n]*))*\n/g).length;

運が良ければ、引用符で囲まれていないフィールドに文字を含めないというRFC4180の推奨事項に準拠するCSVのバリアントを処理"できる場合は、これをもう少し読みやすくすることができます。"以前と同じように改行で分割し、各行の文字数を数えます。偶数の場合は、完全な行があります。奇数の場合は分割されます。

var lines= csv.split('\n');
for (var i= lines.length; i-->0;)
    if (lines[i].match(/"/g).length%2===1)
        lines.splice(i-1, 2, lines[i-1]+lines[i]);
var rowsn= lines.length;
于 2010-06-01T20:16:48.047 に答える
4

ドキュメントの行数をカウントするには(Javascriptで文字列として取得したら)、次のようにします。

var lines = csvString.split("\n").length;
于 2010-06-01T19:50:33.167 に答える
2

'。'を使用できます 最後の改行を除く行のすべてに一致する-引用符で囲まれた新しい行はカウントされません。マルチラインフラグには「m」を使用し、グローバルには「g」を使用します。

function getLines(s){
    return s.match(/^(.*)$/mg);
}

alert(getLines(string).length)

空の行をスキップしてもかまわない場合は簡単ですが、間隔を空けるためにそれらを保持する必要がある場合があります。

function getLines(s){return s.match(/(。+)/ g); }

于 2010-06-01T21:05:13.287 に答える
0

csvの行数をカウントする場合は、この例を使用できます。

http://purbayubudi.wordpress.com/2008/11/09/csv-parser-using-javascript/

csvファイルを取得し、ポップアップウィンドウに行数を表示します。

于 2014-04-14T09:16:47.047 に答える