|
|
|
|
|
在前文中,我介紹了C#解析CSV數(shù)據(jù)的方法——使用TinyCsvParser。TinyCsvParser 是一個(gè) .NET 庫,用于以簡單的方式解析 CSV 數(shù)據(jù)。在上文中主要介紹了TinyCsvParser的基本用法。
在本文中,將介紹TinyCsvParser的使用示例,通過四個(gè)方面來介紹。
通過教程學(xué)習(xí)如何完成常見任務(wù)的方法。
解析自定義格式
TinyCsvParser對(duì)數(shù)據(jù)格式做出假設(shè),默認(rèn)為 .NET 默認(rèn)格式。這對(duì)于簡單的 CSV 文件通常就足夠了,但有時(shí) CSV 數(shù)據(jù)帶有特殊格式的值。當(dāng)默認(rèn)轉(zhuǎn)換器無法解析格式時(shí),需要自定義轉(zhuǎn)換器。
這聽起來比實(shí)際上更復(fù)雜。所有現(xiàn)有的轉(zhuǎn)換器都支持自定義用于解析值的格式。格式化字符串與 .NET 中用于解析字符串值的字符串相同。
想象一下,客戶端發(fā)送具有奇怪日期格式的數(shù)據(jù)并像這樣寫入日期2004###01###25
。這些值無法使用默認(rèn)日期格式進(jìn)行解析,但在TinyCsvParser中,可以使用自定義日期時(shí)間格式DateTimeConverter
進(jìn)行映射。
要使用自定義轉(zhuǎn)換器,你只需將 Converter
傳遞給MapProperty
方法即可為屬性映射定義自定義轉(zhuǎn)換器。
private class CsvPersonMappingWithCustomConverter : CsvMapping<Person>
{
public CsvPersonMappingWithCustomConverter()
{
MapProperty(0, x => x.FirstName);
MapProperty(1, x => x.LastName);
MapProperty(2, x => x.BirthDate, new DateTimeConverter("yyyy###MM###dd"));
}
}
假設(shè)你想在 CSV 值和布爾值之間進(jìn)行映射。該庫假設(shè) true 的字符串值為 "true
",false 的字符串值為"false
"。但現(xiàn)在假設(shè)你的 CSV 數(shù)據(jù)使用文本"ThisIsTrue
"作為布爾值true
,并"ThisIsFalse
"作為布爾值false
。
然后你必須實(shí)例化并使用BoolConverter
這樣的:
new BoolConverter("ThisIsTrue", "ThisIsFalse", StringComparison.InvariantCulture);
這個(gè)轉(zhuǎn)換器可以像這樣在 Property Mapping 中使用:
public class EntityWithBoolean
{
public bool PropertyBoolean { get; set; }
}
public class BooleanMappingWithCustomConverter : CsvMapping<EntityWithBoolean>
{
public BooleanMappingWithCustomConverter()
{
MapProperty(0, x => x.PropertyBoolean, new BoolConverter("ThisIsTrue", "ThisIsFalse", StringComparison.InvariantCulture));
}
}
總結(jié)
本文介紹了C# CSV解析器TinyCsvParser使用示例:解析自定義格式,我們將在后面繼續(xù)介紹TinyCsvParser的更多使用示例。
相關(guān)文章