【问题标题】:I need assistance to split a record in a .csv file using the C# Split command [duplicate]我需要帮助才能使用 C# Split 命令在 .csv 文件中拆分记录 [重复]
【发布时间】:2013-07-18 18:40:29
【问题描述】:

我尝试拆分的记录格式如下:

987,"This is second field, it contains multiple commas, but is enclosed in quotes, 88123, 99123", 1221, lastfield

我正在使用代码:

char[] delimiters = new char[] {',' };
string[] parts = line.Split(delimiters, StringSplitOptions.None);

我得到拆分结果,但它不会将引号分隔的字段视为一个字段。我需要得到 4 个字段的结果,但每个逗号都有一个字段。如何调整/更改代码以获得我需要的结果?

【问题讨论】:

标签: c# csv


【解决方案1】:

string.Split() 功能不够强大。您将需要使用正则表达式(在 C# 中,Regex 类)。

【讨论】:

    【解决方案2】:

    @Tavya 是正确的,因为 String.Split 不会为您工作,因为它不处理引用的行。有很多方法可以剥去这只众所周知的猫的皮,包括使用正则表达式或使用可以通过 Google 搜索找到的众多 CSV 解析器之一。

    另一种简单的方法是使用 VisualBasic 的 TextFieldParser 类。只需在您的项目中引用 Microsoft.VisualBasic.dll 并在文件头中“使用 Microsoft.VisualBasic.FileIO”。然后你可以做这样的事情。

        private List<string> parseFields (string lineToParse)
        {
            //initialize a return variable
            List<string> result = new List<string>();
    
            //read the line into a MemoryStream
            byte[] bytes = Encoding.ASCII.GetBytes(lineToParse);
            MemoryStream stream = new MemoryStream(bytes);
    
            //use the VB TextFieldParser to do the work for you
            using (TextFieldParser parser = new TextFieldParser(stream))
            {
                parser.TextFieldType = FieldType.Delimited;
                parser.Delimiters = new string[] { "," };
                parser.HasFieldsEnclosedInQuotes = true;
                //parse the fields
                while ( parser.EndOfData == false)
                {
                    result = parser.ReadFields().ToList();
                }
            }
    
            return result;
        }
    

    结果将是:

    987

    这是第二个字段,它包含多个逗号,但用引号括起来,88123,
    99123

    1221

    最后一个字段

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-24
      • 1970-01-01
      • 2020-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多