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

如何解决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-已解决该问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?