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