var columnNames = new string[] {"A","B","C"};
var cb = new DelimitedClassBuilder("GeneratedClassName", ",") { IgnoreFirstLines = 0, IgnoreEmptyLines = true, Delimiter = "," };
foreach (var header in columnNames)
{
cb.AddField(header, typeof(string));
cb.LastField.FieldQuoted = true;
cb.LastField.QuoteChar = '"';
cb.LastField.QuoteMode = QuoteMode.OptionalForRead;
cb.LastField.FieldOptional = true;
}
var engine = new FileHelperEngine(cb.CreateRecordClass());
var dataTable = engine.ReadStringAsDT("123 abc Abhi");
在上面的代码片段中,预期行为是将创建数据表。该数据表应包含3列A,B,C和一个记录。该记录的A栏值应为“123 abc Abhi”。 FileHelpersEngine返回的是具有3列A,B,C和一条记录的数据表(到目前为止)。该记录的A列值为“123 abc Abh”(注意最后一个字符'i'被修剪)。为什么修剪最后一个字符?始终不修剪最后一个字符。它仅针对某些输入字符串进行修剪。对于例如如果输入字符串是“TestInput”,它可以正常工作。我们正在使用FileHelpers版本1.修改最后一个字符的原因是什么?
答案 0 :(得分:1)
旧版本的FileHelpers库中a bug related to optional fields。
如果我没记错的话,一种解决方法是添加另一个(忽略的)可选字段。