C# 拆分大文件,其中行用分号分隔,拆分的部分可以在引号中包含分号

C# 拆分大文件,其中行用分号分隔,拆分的部分可以在引号中包含分号,c#,regex,C#,Regex,我需要在一个大文件(200MB-5GB)中将行拆分为多个部分,其中的行看起来像这样 价值1;价值2;“价值3;额外”;价值4;“价值5;额外” 行需要用分号分隔。常规String.Split不起作用,因为分号可以位于引号内 我认为正则表达式在这里工作得最好,尤其是当文件有数百万行时。我感谢任何能帮助我拆分的指导或代码 更新: 我想看到的上述样本行的结果是 value1 value2 "value3;extra" value4 "value5;extra" 谢谢添加对Microsoft.Visu

我需要在一个大文件(200MB-5GB)中将行拆分为多个部分,其中的行看起来像这样

价值1;价值2;“价值3;额外”;价值4;“价值5;额外”

行需要用分号分隔。常规
String.Split
不起作用,因为分号可以位于引号内

我认为正则表达式在这里工作得最好,尤其是当文件有数百万行时。我感谢任何能帮助我拆分的指导或代码

更新:

我想看到的上述样本行的结果是

value1
value2
"value3;extra"
value4
"value5;extra"

谢谢

添加对Microsoft.VisualBasic的引用并使用该类:


添加对Microsoft.VisualBasic的引用并使用类:


string.split会起作用的,我想它不会完全符合您的期望。请举例说明您希望输出行的外观。此外,您可能希望使用术语“分号”而不是“半列”。您能够逐行处理此文件,还是将其显示为数据块?是否可以删除“,在分裂之前;?”@AdrianWragg我有整个文件available@Yoztastic报价是我需要保留的价值的一部分。拆分将起作用,我想它不会满足您的所有期望。请举例说明您希望输出行的外观。此外,您可能希望使用术语“分号”而不是“半列”。您能够逐行处理此文件,还是将其显示为数据块?是否可以删除“,在分裂之前;?”@AdrianWragg我有整个文件available@Yoztastic引号是我需要保留+1的值的一部分。谢谢,我很感激你的asnwerNote给管理员的提示:我没想到会有这么多的反对票:)@AlexS:注意,你的样本数据表明你使用的是一个引号字符
。因此设置
HasFieldsEnclosedInQuotes=true
。另外,使用
using
语句(相应地编辑了Alex答案).Btw,Stackoverflow是由它的用户(有足够的声誉)主持的。谢谢,@TimSchmelter.+1。谢谢你,我感谢你的asnwerNote给管理员:我没想到会在这么多的反对票中得到这个答案:)@Alex:注意,你的示例数据表明你使用的是一个引用字符
。因此,设置HasFieldsEnclosedInQuotes=true。另外,使用
using
语句(相应地编辑Alex答案)。顺便说一句,Stackoverflow是由它的用户(有足够的声誉)控制的。谢谢,@TimSchmelter。
using System;
using System.IO;
using Microsoft.VisualBasic.FileIO;

class Program
{
    static void Main(string[] args)
    {
        using(var input = File.OpenRead("input.txt"))
        using(var tfp = new TextFieldParser(input))
        {
            tfp.SetDelimiters(new string[] { ";" });
            tfp.HasFieldsEnclosedInQuotes = true;
            var fields = tfp.ReadFields();
            foreach (var field in fields)
            {
                Console.WriteLine(field);
            }
        }
    }
}