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 中国語 Web サイトの他の関連記事を参照してください。