CsvParser 遗漏了一些带有指定分隔符的地方
CsvParser misses some places with specified delimeter
我有一个 C# 代码可以解析数据并使用“@BELL”作为分隔符。 (BELL为ASCII码)
但有些值的末尾有另一个“@”,因此它看起来像这样“0.0000000@SS-AA&-BB-C)@@021328@STRING_Price”。
CsvParser 确实在第一个“@”处拆分,但错过了第 2 次出现(它有“@@”的地方)并在第 3 次出现时很好地拆分。
源中的数据不能修改,必须保持原样。
我们正在使用 CsvHelper v 15.0.0。
这是一个已知的 CsvParser 问题吗? (我试图在不添加额外的 parsing/replacement 的情况下离开)。
这是我的代码(我对其进行了简化并使用本地文件进行测试,但实际上它转到了 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@.99@@False
111@A778@10211@2@Joe@0.0000000@SS-AA&-BB-C)@@@SS-AA&-BB-C)@@021328@STRING_Price@.99@@False
这似乎是 v15.0.0 的 CsvHelper 包中的错误。
将其更新到最新版本 15.0.5 - 已解决问题。
我有一个 C# 代码可以解析数据并使用“@BELL”作为分隔符。 (BELL为ASCII码)
但有些值的末尾有另一个“@”,因此它看起来像这样“0.0000000@SS-AA&-BB-C)@@021328@STRING_Price”。 CsvParser 确实在第一个“@”处拆分,但错过了第 2 次出现(它有“@@”的地方)并在第 3 次出现时很好地拆分。 源中的数据不能修改,必须保持原样。
我们正在使用 CsvHelper v 15.0.0。
这是一个已知的 CsvParser 问题吗? (我试图在不添加额外的 parsing/replacement 的情况下离开)。
这是我的代码(我对其进行了简化并使用本地文件进行测试,但实际上它转到了 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@.99@@False
111@A778@10211@2@Joe@0.0000000@SS-AA&-BB-C)@@@SS-AA&-BB-C)@@021328@STRING_Price@.99@@False
这似乎是 v15.0.0 的 CsvHelper 包中的错误。 将其更新到最新版本 15.0.5 - 已解决问题。