Example JavaScript code to parse CSV data

前端 未结 12 1698
梦谈多话
梦谈多话 2020-11-21 07:58

Where could I find some JavaScript code to parse CSV data?

12条回答
  •  囚心锁ツ
    2020-11-21 08:32

    I'm not sure why I couldn't get Kirtan's example to work for me. It seemed to be failing on empty fields or maybe fields with trailing commas...

    This one seems to handle both.

    I did not write the parser code, just a wrapper around the parser function to make this work for a file. See attribution.

        var Strings = {
            /**
             * Wrapped CSV line parser
             * @param s      String delimited CSV string
             * @param sep    Separator override
             * @attribution: http://www.greywyvern.com/?post=258 (comments closed on blog :( )
             */
            parseCSV : function(s,sep) {
                // http://stackoverflow.com/questions/1155678/javascript-string-newline-character
                var universalNewline = /\r\n|\r|\n/g;
                var a = s.split(universalNewline);
                for(var i in a){
                    for (var f = a[i].split(sep = sep || ","), x = f.length - 1, tl; x >= 0; x--) {
                        if (f[x].replace(/"\s+$/, '"').charAt(f[x].length - 1) == '"') {
                            if ((tl = f[x].replace(/^\s+"/, '"')).length > 1 && tl.charAt(0) == '"') {
                                f[x] = f[x].replace(/^\s*"|"\s*$/g, '').replace(/""/g, '"');
                              } else if (x) {
                            f.splice(x - 1, 2, [f[x - 1], f[x]].join(sep));
                          } else f = f.shift().split(sep).concat(f);
                        } else f[x].replace(/""/g, '"');
                      } a[i] = f;
            }
            return a;
            }
        }
    

提交回复
热议问题