在 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中文网其他相关文章!