[英]C# FileHelpers Nulls in Tab Delimited file
我正在使用FileHelpers解析制表符分隔文件。
使用FieldNullValue
屬性后,將忽略空值, FieldNullValue
我將使用錯誤日志
在第4行的字段“歸檔名稱”之后找不到(記錄的字段較少,分隔符錯誤或下一個字段必須標記為可選)。
分隔符的類定義:
[DelimitedRecord("\t")]
字段都是具有相同屬性的字符串:
[FieldTrim(TrimMode.Both)]
[FieldNullValue("NULL")]
[FieldQuoted('"', QuoteMode.OptionalForRead, MultilineMode.AllowForRead)]
public String initials;
在十六進制編輯器中查看導入的文件,我可以看到背靠背選項卡字符(09 09),我認為這是一個空字段。
正如您在屏幕捕獲字段中看到的那樣,5和9為空。 這些會被filehelper解析器忽略。 有誰知道為什么?
我認為你有兩個問題在繼續。
首先,FileHelpers還需要一個標簽。 一個簡單的解決方法是使用[FieldOptional]
屬性標記最后一個字段。
其次, FieldNullValue("NULL")
表示:如果文件中字段的值為null
,則將其設置為字符串“NULL”。 文件中的值為""
,而不是null
。 如果需要將空值轉換為其他值,可以使用自定義轉換器 ,如下所示:
public class MyEmptyFieldConverter : ConverterBase
{
protected override bool CustomNullHandling
{
/// you need to tell the converter not
/// to handle empty values automatically
get { return true; }
}
public override object StringToField(string from)
{
if (String.IsNullOrWhiteSpace(from))
return "NULL";
return from;
}
}
然后將屬性添加到您的字段中。
[FieldConverter(typeof(MyEmptyFieldConverter))]
public string field9;
刪除屬性:
[FieldTrim(TrimMode.Both)]
似乎已經解決了這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.