CsvParser错过了一些具有指定距离的地方

问题描述

我有一个C#代码,用于解析数据,并使用“ @BELL”作为Delimeter。 (BELL是ASCII码)

但是某些值的末尾带有另一个“ @”,因此看起来像是“ 0.0000000@SS-AA&-BB-C)@@ 021328 @ STRING_Price”。 CsvParser确实在第一个“ @”处分割,但是错过了第二个(在其具有“ @@”的情况下),并且在第三个事例上进行了精细分割。 数据无法在源中进行修改,必须保持原样。

我们正在使用CsvHelper v 15.0.0。

这是一个已知的CsvParser问题吗? (我试图在不添加其他解析/替换的情况下逃脱)。

这是我的代码(我已经对其进行了简化,并出于测试目的使用本地文件,但实际上它转到AzureBlobStorage):

private static readonly string delimiter = "@" + new string('\u0007',1);
private static string filePath = "C:\\Downloads\\000_From_Blob";

private static IEnumerable<string[]> ParseCompressedClientFormattedStream(string filePath,string delimiter)
{
    using (var remoteStream = File.OpenText(filePath))
    {
        using (var csvReader = new CsvParser(remoteStream,new CsvConfiguration(CultureInfo.InvariantCulture) { Delimiter = delimiter.ToString(),BadDataFound = null }))
        {
                for (; ; )
                {
                    var line = csvReader.Read();
                    if (line != null) yield return line;
                    else break;
                }
         }
    }
}

这是源文件中的2个示例行。第一行被正确解析。但是第二个不会在有两个“ @”的地方分割:

110@A778@10211@2@Joe@0.0000000@SS-AA&-BB-C)@@SS-AA&-BB-C)@021328@STRING_Price@$9.99@@False
111@A778@10211@2@Joe@0.0000000@SS-AA&-BB-C)@@@SS-AA&-BB-C)@@021328@STRING_Price@$9.99@@False

enter image description here

解决方法

这似乎是v15.0.0的CsvHelper软件包中的错误。 将其更新到最新版本15.0.5-已解决该问题。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...