首页 > 后端开发 > C++ > 如何在C#中使用嵌入式逗号正确拆分CSV列?

如何在C#中使用嵌入式逗号正确拆分CSV列?

DDD
发布: 2025-01-26 16:56:10
原创
949 人浏览过

How to Properly Split CSV Columns with Embedded Commas in C#?

C#中分割包含嵌入逗号的CSV列

CSV文件通常使用逗号分隔列。但是,某些列本身可能包含逗号,这在将CSV数据分割成不同的字符串时会带来挑战。

问题:

给定一个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>
登录后复制

如何将此行分割成一个字符串数组,确保“Corvallis, OR”文本保留在一个字段中?

解决方案:

提供的正则表达式仅适用于所有逗号都在引号外或引号内的CSV数据。为了解决这个问题,请考虑使用Microsoft.VisualBasic.FileIO命名空间中的TextFieldParser类。此类旨在处理分隔文件,其中某些字段用引号括起来,而其他字段则没有。

代码:

<code class="language-csharp">using Microsoft.VisualBasic.FileIO;

// ...

string csv = "2,1016,7/31/2008 14:22,Geoff Dalgas,6/5/2011 22:21,http://stackoverflow.com,\"Corvallis, OR\",7679,351,81,b437f461b3fd27387c5d8ab47a293d35,34";

using (TextFieldParser parser = new TextFieldParser(new StringReader(csv)))
{
    parser.HasFieldsEnclosedInQuotes = true;
    parser.SetDelimiters(",");

    while (!parser.EndOfData)
    {
        string[] fields = parser.ReadFields();
        foreach (string field in fields)
        {
            Console.WriteLine(field);
        }
    }
}</code>
登录后复制

输出:

<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时,需要在“添加引用.NET”选项卡中添加对Microsoft.VisualBasic的引用。 代码也使用了using语句来确保TextFieldParser被正确关闭。

以上是如何在C#中使用嵌入式逗号正确拆分CSV列?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板