从CSV文件解析\ r \ n字符串

时间:2016-04-13 03:51:22

标签: javascript regex parsing csv split

我正在读取javascript中的csv文件,首先用换行符拆分然后用逗号表示。 我能够成功解析整个csv,但只留下一件事。即 最后一个

我不知道如何删除那些\ r。我正在使用的代码是

    function csvJSON(csv){
        var lines=csv.split("\n");
        var result = [];
        var headers=lines[0].split(",");
        for(var i=1;i<lines.length;i++){
            var obj = {};
            var currentline=lines[i].split(",");
            for(var j=0;j<headers.length;j++){
                  obj[headers[j]] = currentline[j];
            }
            result.push(obj);
         }
         return result; //JavaScript object
     }

4 个答案:

答案 0 :(得分:2)

standard CSV行以CRLF('\ r \ n')结束。但是,如果你期望支持非标准线结尾也会测试其他人:

var lines=csv.split(/\r\n|\n|\r/);

答案 1 :(得分:0)

尝试此查询,

    function csvJSON(csv){

     var lines=csv.replace(/(\r\n|\n|\r)/gm,"");

     var result = [];

     var headers=lines[0].split(",");

     for(var i=1;i<lines.length;i++){

      var obj = {};
      var currentline=lines[i].split(",");

     for(var j=0;j<headers.length;j++){
       obj[headers[j]] = currentline[j];
     }

      result.push(obj);

    }

     return result; //JavaScript object
    }

答案 2 :(得分:0)

使用trim()删除\r

obj[headers[j].trim()] = currentline[j].trim();

答案 3 :(得分:-1)

尝试以下代码

var data='{"batting_score":"52","wickets":"0","runs_conceded":"12","catches":"0","stumps":"0","opposition":"v Pakistan","ground":"Dhaka","date":"18-Mar-12","match_result":"won","result_margin":"6 wickets","toss":"lost","batting_innings":"2nd"}'.replace(/\r/g,'');
var JsonData=JSON.parse(data);

现在您可以访问以下属性

JsonData.batting_score //52