jquery.csv.jsと改行コード

Linux

はじめに

FlotとHighchartsでCSVファイルを元にグラフを描画したときに「jquery.csv.js」を使いました。
「jquery.csv.js」は、CSVファイルを読み込むためのjQueryのプラグインです。
ソースを見ると改行コードが固定されていたので、自分が使い易いように修正しました。

第2引数で改行コードを指定出来るようにしています。
省略した場合の改行コードはLF「\n」。

【追記 2021.05.26】
こちらを参考に修正すると動作すると思われる。
https://qiita.com/cnloni/items/5de03096a73c702b97ed

【追記 2012.12.28】
こっちの方がスマートで便利っぽい。
記事のリンクは切れていたが、ホームページは残っている。
https://tips.recatnap.info/laboratory/

【追記 2012.09.21】
ご指摘がありましたので「linedelim」を「lined」に修正。
URL修正、追加。

環境

  • jQuery ver.1.8.2
  • jQuery ver.1.7

使用方法の例

タブ区切り、改行コード「LF」のテキストファイルを読みます。

var csv = $.csv("\t", "\n")( data );

カンマ区切り、改行コード「LF」のテキストファイルを読みます。

var csv = $.csv()( data );

タブ区切り、改行コード「CR+LF」のテキストファイルを読みます。

var csv = $.csv("\t", "\r\n")( data );

タブ区切り、改行コード「CR」のテキストファイルを読みます。

var csv = $.csv("\t", "\r")( data );

jquery.csv.js

既にリンク切れ。

jquery-csv

GitHub - evanplaice/jquery-csv: A jQuery CSV parser plugin. Battle Tested | Optimized | 100% IETF RFC 4180 Complete
A jQuery CSV parser plugin. Battle Tested | Optimized | 100% IETF RFC 4180 Complete - evanplaice/jqu...

改行コード

改行コード - Wikipedia

差分

--- jquery.csv-org.js	2011-11-18 16:32:11.000000000 +0900
+++ jquery.csv-v1.js	2011-11-18 16:40:29.000000000 +0900
@@ -6,10 +6,11 @@
*/
;
jQuery.extend({
-    csv: function(delim, quote, linedelim) {
+    csv: function(delim, lf, quote, lined) {
delim = typeof delim == "string" ? new RegExp( "[" + (delim || ","   ) + "]" ) : typeof delim == "undefined" ? ","    : delim;
+        lf    = typeof delim == "string" ? new RegExp( "[" + (lf || "\n"   ) + "]" ) : typeof lf == "undefined" ? "\n"    : lf;
quote = typeof quote == "string" ? new RegExp("^[" + (quote || '"'   ) + "]" ) : typeof quote == "undefined" ? '"'    : quote;
-        lined = typeof lined == "string" ? new RegExp( "[" + (lined || "\r\n") + "]+") : typeof lined == "undefined" ? "\r\n" : lined;
+        lined = typeof lined == "string" ? new RegExp( "[" + (lined || lf) + "]+") : typeof lined == "undefined" ? lf : lined;

function splitline (v) {
// Split the line using the delimitor

改造版

「jquery.csv.js」のファイル名でUTF-8で保存。
第2引数で改行コード「\n」、「\r」、「\r\n」を指定します。

/* Usage:
*  jQuery.csv()(csvtext)                    returns an array of arrays representing the CSV text.
*  jQuery.csv("\t", "\r\n")(tsvtext)        uses Tab as a delimiter (comma is the default)
*  jQuery.csv("\t", "\r\n", "'")(tsvtext)   uses a single quote as the quote character instead of double quotes
*  jQuery.csv("\t", "\r\n", "'\"")(tsvtext) uses single & double quotes as the quote character
*/
;
jQuery.extend({
    csv: function(delim, lf, quote, lined) {
    delim = typeof delim == "string" ? new RegExp( "[" + (delim || ","   ) + "]" ) : typeof delim == "undefined" ? ","    : delim;
    lf    = typeof delim == "string" ? new RegExp( "[" + (lf || "\n"   ) + "]" ) : typeof lf == "undefined" ? "\n"    : lf;
    quote = typeof quote == "string" ? new RegExp("^[" + (quote || '"'   ) + "]" ) : typeof quote == "undefined" ? '"'    : quote;
    lined = typeof lined == "string" ? new RegExp( "[" + (lined || lf) + "]+") : typeof lined == "undefined" ? lf : lined;

    function splitline (v) {
        // Split the line using the delimitor
        var arr  = v.split(delim),
        out = [], q;
        for (var i=0, l=arr.length; i<l; i++) {
            if (q = arr[i].match(quote)) {
                for (j=i; j<l; j++) {
                    if (arr[j].charAt(arr[j].length-1) == q[0]) { break; }
                }
                var s = arr.slice(i,j+1).join(delim);
                out.push(s.substr(1,s.length-2));
                i = j;
            }
            else { out.push(arr[i]); }
        }
        return out;
        }

        return function(text) {
            var lines = text.split(lined);
            for (var i=0, l=lines.length; i<l; i++) {
                lines[i] = splitline(lines[i]);
            }
            return lines;
        };
    }
});

Comments