C# で埋め込みカンマを含む CSV 列を処理する
CSV ファイルを分割するときに、埋め込まれたアドレスや説明など、カンマを含む列が見つかることがあります。この場合、従来の区切り文字分割方法は失敗する可能性がありますが、C# ではいくつかの堅牢なソリューションが利用できます。
1 つの方法は、Microsoft.VisualBasic.FileIO.TextFieldParser
クラスを使用することです。このクラスは区切り文字で区切られたテキスト ファイルの解析を処理し、引用符で囲まれたフィールドの特定の処理を可能にします。
アドレス列にカンマが埋め込まれた次の CSV の例を考えてみましょう:
<code>"2,1016,7/31/2008 14:22,Geoff Dalgas,6/5/2011 22:21,http://stackoverflow.com,\"Corvallis, OR\",7679,351,81,b437f461b3fd27387c5d8ab47a293d35,34"</code>
TextFieldParser
を使用してこの CSV を解析するには、次のコード例に従うことができます:
<code class="language-csharp">using Microsoft.VisualBasic.FileIO; TextFieldParser parser = new TextFieldParser(new StringReader(csv)); parser.HasFieldsEnclosedInQuotes = true; parser.SetDelimiters(","); string[] fields; while (!parser.EndOfData) { fields = parser.ReadFields(); foreach (string field in fields) { Console.WriteLine(field); } } parser.Close();</code>
HasFieldsEnclosedInQuotes
を true
に設定すると、TextFieldParser
は引用符で囲まれたフィールドを別の方法で処理し、フィールド内のカンマが区切り文字として扱われなくなります。
最終出力では、CSV が個々のフィールドに正しく分割され、「オレゴン州コーバリス」住所に埋め込まれたカンマが保持されます。
<code>"2" "1016" "7/31/2008 14:22" "Geoff Dalgas" "6/5/2011 22:21" "http://stackoverflow.com" "Corvallis, OR" "7679" "351" "81" "b437f461b3fd27387c5d8ab47a293d35" "34"</code>
TextFieldParser
クラスを利用すると、埋め込みカンマを含む CSV 列を効率的に処理でき、正確なデータ解釈と操作が保証されます。
以上がC# で埋め込みカンマを含む CSV 列を処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。