Javascriptを使用して.csvファイルの行数をカウントする方法を考えています。誰かが私に指示できる便利なヒントやリソースはありますか?
4 に答える
線の意味によって異なります。改行の数が単純な場合、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;
ドキュメントの行数をカウントするには(Javascriptで文字列として取得したら)、次のようにします。
var lines = csvString.split("\n").length;
'。'を使用できます 最後の改行を除く行のすべてに一致する-引用符で囲まれた新しい行はカウントされません。マルチラインフラグには「m」を使用し、グローバルには「g」を使用します。
function getLines(s){
return s.match(/^(.*)$/mg);
}
alert(getLines(string).length)
空の行をスキップしてもかまわない場合は簡単ですが、間隔を空けるためにそれらを保持する必要がある場合があります。
function getLines(s){return s.match(/(。+)/ g); }
csvの行数をカウントする場合は、この例を使用できます。
http://purbayubudi.wordpress.com/2008/11/09/csv-parser-using-javascript/
csvファイルを取得し、ポップアップウィンドウに行数を表示します。