拆分大文件,其中行以分号分隔,拆分部分可以在引号内包含分号

时间:2013-08-12 13:22:07

标签: c# regex

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

值1;值2; “值3;额外”; VALUE4; “值5;额外的”

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

我认为正则表达式在这里效果最好,特别是如果文件有数百万行。我感谢任何可以帮助我拆分的指导或代码。

更新

我想在上面的示例行中看到的结果是

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

谢谢

1 个答案:

答案 0 :(得分:4)

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

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);
            }
        }
    }
}