如何解决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
解决方法
这似乎是v15.0.0的CsvHelper软件包中的错误。 将其更新到最新版本15.0.5-已解决该问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。