亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用Javascript解析包含數據逗號的CSV字符串?

如何使用Javascript解析包含數據逗號的CSV字符串?

如何使用Javascript解析包含數據逗號的CSV字符串?我有以下類型的字符串var string = "'string, duppi, du', 23, lala"我想在每個逗號上將字符串拆分成一個數組,但只有單引號之外的逗號。我找不出正確的標準.string.split(/,/)會給我["'string", " duppi", " du'", " 23", " lala"]但結果應該是:["string, duppi, du", "23", "lala"]有沒有跨瀏覽器的解決方案?
查看完整描述

3 回答

?
森欄

TA貢獻1810條經驗 獲得超5個贊

RFC 4180溶液

這不能解決問題中的字符串,因為它的格式不符合RFC 4180;可接受的編碼是用雙引號轉義雙引號。下面的解決方案可以正確地處理Google電子表格中的CSV文件D/L。


解析單行是錯誤的。根據rfc 4180字段可能包含crlf,這將導致任何行讀取器破壞csv文件。下面是解析CSV字符串的更新版本:


'use strict';


function csvToArray(text) {

    let p = '', row = [''], ret = [row], i = 0, r = 0, s = !0, l;

    for (l of text) {

        if ('"' === l) {

            if (s && l === p) row[i] += l;

            s = !s;

        } else if (',' === l && s) l = row[++i] = '';

        else if ('\n' === l && s) {

            if ('\r' === p) row[i] = row[i].slice(0, -1);

            row = ret[++r] = [l = '']; i = 0;

        } else row[i] += l;

        p = l;

    }

    return ret;

};


let test = '"one","two with escaped """" double quotes""","three, with, commas",four with no quotes,"five with CRLF\r\n"\r\n"2nd line one","two with escaped """" double quotes""","three, with, commas",four with no quotes,"five with CRLF\r\n"';

console.log(csvToArray(test));


查看完整回答
反對 回復 2019-06-18
  • 3 回答
  • 0 關注
  • 1424 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號