C#中处理包含嵌入逗号的CSV列
在分割CSV文件时,您可能会遇到包含逗号的列,例如嵌入的地址或描述。虽然传统的定界符分割方法在这种情况下可能会失败,但C#中有一些健壮的解决方案可用。
一种方法是使用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分割成各个字段,保留“Corvallis, OR”地址中的嵌入逗号:
<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中文网其他相关文章!