.NETでCSVファイルの解析

CSVファイルの解析ロジックを作成しようと思い、多分似たような事をしてる人がいるだろうと、Googleで検索してみた。
しかし、日本語のページには私の求めてるような情報の載っているページは存在しなかった。

「商品コード,商品名,2000」
こんな感じの文字列をカンマが見つかった時点で分割するっていう事が書かれてるページはたくさん見つかったんですけどね。

「"商品コード","商品名","2,000円"」
こんなデータの場合どうするつもりだろ?

私は英語が大の苦手なで、基本的は日本国内のページでのみ情報収集を行う。
しかし今回は見つからなかった為、海外ページも検索対象に入れてることに。
私にとって苦痛の時間の始まりだ、、、ってかすぐ見つかった。
CSV解析なんて枯れたデータフォーマットとはいえ、素人でも簡単に扱えるファイルだし未だに主要なデータ書式であることは間違いないだろう。
なんで情報が少ないんだろ?初歩的すぎて記事にするまでも無い?(^^;

以下が自分なりにアレンジしてみたサンプルコードだ。
Regexクラスのコンストラクタ引数に指定されているリテラルは正直私には何をやっているかわからない。
いや、解りたくないというべきか。
正規表現は使いようによっては、たった1行でロジック数十行のコードを書くこ事と同じ処理が行える。
しかし、これを多用するとメンテナンス性が悪くなるのでは?と思ってしまう。
少なくとも私の周りには「正規表現マスター」はいない。
私の技術レベルの場合、先人たちが編み出したこのような正規表現を手を加えることなく、そのまま使うくらいであればいいかなと思う。

↓↓↓C#サンプル↓↓↓

Regex r = new Regex(",(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))");
string[] sAry = r.Split(strLine);

for(int i=0;i < sAry.Length;i++)
{
}

Published 2006年3月23日 11:45 by aroooy
Filed under:

Comments

No Comments

Leave a Comment

(required) 
(required) 
(optional)
(required) 
Powered by Community Server (Non-Commercial Edition), by Telligent Systems