首頁 >web前端 >js教程 >如何在 JavaScript 中正確解析帶有逗號的 CSV 字串?

如何在 JavaScript 中正確解析帶有逗號的 CSV 字串?

Linda Hamilton
Linda Hamilton原創
2024-12-03 02:51:14971瀏覽

How to Correctly Parse CSV Strings with Commas in JavaScript?

在JavaScript 中解析字串時如何處理CSV 資料中的逗號

處理包含也包含逗號的資料的CSV 字串時,解析可以很棘手。如果某些值用引號引起來,僅用逗號(“,”)分割字串不會給出所需的輸出。以下是如何在尊重引號的情況下解析此類CSV 字串:

// Regex to validate a CSV string:
const re_valid = /^\s*(?:'[^'\]*(?:\[\S\s][^'\]*)*'|"[^"\]*(?:\[\S\s][^"\]*)*"|[^,'"\s\]*(?:\s+[^,'"\s\]+)*)\s*(?:,\s*(?:'[^'\]*(?:\[\S\s][^'\]*)*'|"[^"\]*(?:\[\S\s][^"\]*)*"|[^,'"\s\]*(?:\s+[^,'"\s\]+)*)*\s*)*$/;

// Regex to parse one value from a valid CSV string:
const re_value = /(?!\s*$)\s*(?:'([^'\]*(?:\[\S\s][^'\]*)*)'|"([^"\]*(?:\[\S\s][^"\]*)*)"|([^,'"\s\]*(?:\s+[^,'"\s\]+)*)|)\s*(?:,|$)/g;

function CSVtoArray(text) {
    if (!re_valid.test(text)) return null;
    const a = [];
    text.replace(re_value, (m0, m1, m2, m3) => {
        if      (m1 !== undefined) a.push(m1.replace(/\'/g, "'"));
        else if (m2 !== undefined) a.push(m2.replace(/\"/g, '"'));
        else if (m3 !== undefined) a.push(m3);
        return '';
    });
    if (/,\s*$/.test(text)) a.push('');
    return a;
}

透過這種方法,您可以在尊重引號的同時準確解析CSV 字串,包括混合類型和轉義字符的字串。

以上是如何在 JavaScript 中正確解析帶有逗號的 CSV 字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn