CSVのクォーテーションフィールドとエスケープの処理

CSVのクォーティングルールをマスター:ダブルクォートされたフィールド、エスケープされた引用符、複数行の値、混合クォーティング。堅牢なCSV解析に必須。

Formatting

詳細な説明

CSVのクォーティングとエスケープルール

クォートされたフィールドの適切な処理が、単純なCSVパーサーと堅牢なパーサーを分けます。RFC 4180はほとんどのツールが従うクォーティングルールを定義しています。

クォーティングが必要な場合

フィールドは以下を含む場合、ダブルクォートで囲む必要があります:

  • デリミタ文字(通常はカンマ)
  • ダブルクォート文字
  • 改行(CR、LF、またはCRLF)

name,description,price
"Smith, John","He said ""hello""",29.99
  1. "Smith, John" — カンマを含むのでクォートされています。パーサーは内部のカンマで分割してはいけません。
  2. "He said ""hello""" — ダブルクォートを含み、二重化によってエスケープされています。解析後の値はHe said "hello"です。

よくある解析ミス

  1. すべてのカンマで分割する。 単純なline.split(",")はクォートされたフィールドにカンマが含まれている場合に壊れます。
  2. 二重クォートを処理しない。 クォートされたフィールド内の""は、フィールドの終わりではなくリテラルの"を表します。
  3. 複数行フィールドを無視する。 クォートされたフィールドは複数行にまたがることがあります。

正しくクォートされたCSVの生成

JSONからCSV出力を生成する際は、これらのルールを適用します:

function escapeField(value, delimiter = ",") {
  const str = String(value);
  if (str.includes(delimiter) || str.includes('"') || str.includes("\n")) {
    return '"' + str.replace(/"/g, '""') + '"';
  }
  return str;
}

ユースケース

サプライヤーからの商品カタログCSVエクスポートを解析する場合に使用します。商品説明にカンマ、引用符、HTMLマークアップが含まれており、JSON変換時に正しく保持する必要があります。

試してみる — CSV ↔ JSON Converter

フルツールを開く