我正在使用FileHelper 2.0来解析我的csv数据。 filehelper有没有可以正确处理转义分隔符的选项?它可以将字段标识为数据而不是分隔符。
我们的csv格式: 使用\,
转义逗号(,)示例数据:
姓名,姓氏
尼科\,LE,opeka
当前代码:
[DelimitedRecord(",")]
public class contactTemplate
{
public string firstName;
public string lastName;
}
如何获得firstName = nico,le和lastName = opeka。 FileHelpers按逗号分割,现在返回:
firstName - >尼科\
lastName - > ,LE,opeka
答案 0 :(得分:5)
首先,您需要选择引用所有字段。
[DelimitedRecord(",")]
public class contactTemplate
{
[FieldQuoted('"', QuoteMode.OptionalForBoth)]
public string firstName;
[FieldQuoted('"', QuoteMode.OptionalForBoth)]
public string lastName;
}
然后,您需要引用包含转义字符的所有字段。您可以使用BeforeReadRecord
事件。
FileHelperEngine engine = new FileHelperEngine(typeof(contactTemplate));
engine.BeforeReadRecord += BeforeEvent;
private void BeforeEvent(EngineBase engine, BeforeReadRecordEventArgs e)
{
if (e.RecordLine.Contains("\"))
{
string[] parts = SplitStringRespectingEscapeCharacter(eRecordLine);
parts = QuoteAnyPartsWhichContainEscapeCharacter(parts);
parts = RemoveAnyEscapeCharacters(parts);
e.RecordLine = parts.Join;
}
}
您可以找到一些代码来开始使用自定义拆分功能here。