複数行のテキストに引用符を付ける方法:JSON と CSV の違い
コードや JSON の配列、チャットの返信に入れるテキストには前後の引用符が必要です。行ごとに引用符を付け、内側の引用符をエスケープすれば、対応が取れているか悩まずに済みます。
揃った引用符が必要な場面
テストデータを作るとき、地名の列を JSON 配列の要素に変えることがあります。手で引用符を付けると必ず 1 か所は漏れ、1 か所でも漏れると JSON.parse が失敗し、どの行が欠けているかを探す作業が発生します。
もう一つは、引用文を文書や返信に貼るときに開始と終了を明示したい場合、あるいは複数の文をコードの文字列配列に入れる場合です。行内の二重引用符をエスケープしないと文字列が途中で終わり、以降のコードが構文エラーになります。
- 1 列の値を JSON 配列や文字列リストにする
- コードに複数行の文字列定数を書く
- 引用やメール本文の範囲を明示する
- テスト用に引用符付きのデータを用意する
行ごとに処理し、JSON 形式でエスケープする
処理は行単位です。空でない行の前後にストレートクォートを 1 つずつ付け、行内の二重引用符はバックスラッシュと引用符に置き換え、空行は空のまま残します。3 段落なら 3 行がそれぞれ引用符で囲まれ、段落全体が 1 対で囲まれるわけではありません。
この方式は JSON と多くのプログラミング言語の文字列と同じですが、CSV とは異なります。CSV はフィールド内の引用符を 2 つ重ねて表し、バックスラッシュは使いません。そのまま CSV に貼るとフィールドの境界が崩れます。
- 行ごとに引用符を付け、空行は空のまま
- 行内の引用符はバックスラッシュ + 引用符(JSON 形式)
- CSV は引用符の二重化が必要で、形式が違う
- 結果は複数行のままで、1 つの文字列にはならない
できないことと、代わりの方法
付くのはストレートクォートだけです。単一引用符、かぎ括弧「」、湾曲した引用符は選べず、特定の行だけに付けることもできません。改行はエスケープシーケンスに変換されないため、複数行の文章が 1 つの正しい JSON 文字列になることはなく、各行が別の文字列になります。
段落全体を 1 対で囲みたいときは、先に改行を結合してから付けます。CSV のフィールドが必要なら表計算ソフトから書き出すほうが確実です。JavaScript のテンプレートリテラルはバッククォートとドル記号の扱いも必要で、このツールの範囲外です。
- ストレートクォートのみ
- 改行はエスケープされず、1 つの JSON 文字列にならない
- CSV は表計算ソフトから書き出す
- 段落全体は行を結合してから囲む
よくある質問
日本語のかぎ括弧や湾曲した引用符も付けられますか?
いいえ、付くのはストレートクォートだけです。かぎ括弧や湾曲した引用符は組版用の記号で、コードや JSON、CSV ではストレートクォートが必要です。必要な場合は変換後に手で置き換えてください。
複数行のテキストはどうなりますか?
各行が個別に引用符で囲まれ、空行は空のまま残ります。そのため結果は引用符付きの文字列が複数並ぶ形になり、段落全体が 1 対で囲まれるわけではありません。全体を囲むなら先に改行を結合してください。
元のテキストに引用符があるとどうなりますか?
行内の二重引用符がバックスラッシュと引用符に置き換わり、外側にさらに 1 対が付きます。元から引用符がある場合は二重の入れ子になるため、使う前に何重になるべきか確認してください。
関連ツール:引用符の付与