首页 >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