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