ITエンジニアの視界

35歳を超えてもエンジニアリング領域で生きるITエンジニアの見たもの感じたことを発信していきます。

プログラミング中。3つ目

csvファイル内の区切り文字を含むデータを区切らせないようにしたい」というリクエストを題材にプログラミング中。 fukudaさんの2017年投稿のリクエスト。これまた古い。けど取り組んでみます。 要件は、Javaで「csvファイルで区切り以外でデータ内にカンマがあった場合にそこで別カラムとして分けないようにしたい」とのこと。 仕事中に似たようなことをやったことがあります。

そんなに時間かからないかな?と思っていたら地味に時間がかかり始めました。 csvJavaで処理しようとすると、StringTokenizerあたりを使用すると思うのですが、今回の要件ではそれは使えません。区切り文字で分けたなくない場合があるという要望なので。 csvの文字列にはダブルクォーテーションが付くのが一般的。このダブルクォーテーションの存在を意識してTokenizeしてあげないといけません。 このことを意識すると、ダブルクォーテーションで囲まれた範囲を文字列だと判定するロジックが必要になります。 このロジックでは文字列の中には改行が含まれる場合もあることに留意しないといけません。改行があってもそれがレコードの変更点とはならないからです。 ダブルクォーテーションに囲まれているならただの文字列の一部とする必要があります。

明日には形にしてソースコード販売サイトに登録したいと思います。