怎么用 javascript分割双引号里有逗号的CSV文件的行

例子:
A,b,c,”d1,d2",e
.....
....

先分割成行,列的话正则检查下是否存在引号,单双引号扩起的内容,先提取出来用占位符替换后再split,最后替换下占位符

代码如下,有帮助麻烦点个采纳【本回答右上角】,谢谢~~

img

   var s = `A,b,c,"d1,d2",e
A,b,c,d1d2,e
A,b,c,'d1,d2,d3,e4',e`;
    var arr = s.split('\n');
    arr.forEach((item, index) => {
        var re = /('|")([^'"]+)\1/g, kv = {}, groupIndex = -1, key;
        item = item.replace(re, function ($0, $1, $2) {
            groupIndex++;
            key = '__group' + groupIndex + '__';//占位符
            kv[key] = $2;
            return key
        });
        arr[index] = item.split(',');
        //有引号的组,需要遍历一次替换回占位符
        if (groupIndex > -1) arr[index].forEach((v, idx) => arr[index][idx] = kv[arr[index][idx]] || arr[index][idx]);
    });
    console.log(arr)

具体要分割得到什么数据,JS分割可以用split函数

代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)

var csv = `A,b,c,"d1,d2",e
'1',"2",'y,u,i',"x,'y',z",3`;
var arr = csv.split("\n");
var res = [];
arr.forEach(v=>{
    var r = [];
    v.replace(/([\'\"])(.+?)\1|([^,]+)/g,($0,$1,$2,$3)=>{
        r.push($2 || $3);
    });
    res.push(r);
});
console.log(res);

img

使用字符串中split函数就可以分割逗号!望采纳!