【Apex】CSV読み込み。カンマを含む文字データを分割する。

Salesforce

CSVの文字データにカンマが含まれる場合

1,”カンマ,を含む文字”

これをapexで読み込む際、Splitで単純にカンマ分割するとこんな感じの読み込みになってしまいます。

1列目:1
2列目:”カンマ
3列目:を含む文字”

ダブルクォーテーションで囲まれたカンマを文字として扱いたい場合、apexでは現時点でAPIが用意されていないようなので(多分..)、1文字ずつ判定する必要があります。

サンプルはこんな感じになります。
1行分のデータを食わせると、カンマで分割したデータをリストに突っ込んで返してくれるメソッドです。

なお上記サンプルはダブルクォーテーションのエスケープには対応していません・・。あしからず。
囲みのダブルクォーテーションはついでに取っ払っています。

デバッグモードで動作確認します。

期待とおりの動作になりました!

USER_DEBUG [6]|DEBUG|1列目:1
USER_DEBUG [6]|DEBUG|2列目:カンマ,を含む文字

コメント

タイトルとURLをコピーしました