ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript でカンマを含む CSV 文字列を正しく解析するにはどうすればよいですか?

JavaScript でカンマを含む CSV 文字列を正しく解析するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-03 02:51:14969ブラウズ

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。