C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 45 を表示中)
■24136 / )  Re[7]: 「,」によるSplit
□投稿者/ THREE-ONE (14回)-(2008/08/28(Thu) 10:48:39)
THREE-ONE さんの Web サイト
string text = "\"abc,xyz\",\"123,456\",777,333";
string pattern = "(\"[^\"]+\"(?=,))|((?!\")[^,]+(?!\"))";
Regex regex = new Regex(pattern);
MatchCollection matches = regex.Matches(text);
for (int i = 0; i < matches.Count; i++)
{
    Console.WriteLine("{0} : {1}", i, matches[i].Value);
}

提示されている例だけならば、これでいけるでしょう。
Split にこだわりたいなら別ですが。
ですが、よくあるExcelのように、要素内の " が "" でエスケープされるような CSV の場合はこれでは不可能です。
CSV の形式にまだいくつかの条件があるならば、私も頭から一文字ずつ読み込んで処理することをお勧めします。
正規表現に頼っていると、予想外のパターンのときにデバッグや修正が面倒になったりしますので。

返信 編集キー/


管理者用

- Child Tree -