gpt4 book ai didi

c# - FileHelpers:混合分隔和固定长度记录

转载 作者:太空狗 更新时间:2023-10-30 00:52:19 26 4
gpt4 key购买 nike

在这里,我必须使用 FileHelpers 和 C# 写出一个文件,其中的记录是管道分隔的。大部分字段具有可变长度(因此,我的记录将是 [DelimitedRecord("|")] )。但是有些字段必须有固定长度(它们必须有填充、特定格式等)。

我在谷歌上搜索了一堆,但没有关于如何实现这一目标的目标。

例子:

[DelimitedRecord("|")]
public class Customer
{
public int CustId; //variable length

public string Name; //variable length

public decimal Balance; //variable length

[FieldConverter(ConverterKind.Date, "dd-MM-yyyy")]
public DateTime AddedDate;

public int Code; // this one must have 10 characters with "zero-fill", like
// 153 must look like 0000000153

}

我如何做到这一点?我是否必须使用转换器方法并为此编写自己的转换器?

提前谢谢你。

最佳答案

对于以后遇到这个问题的任何人,这里有一些工作代码可以解决这个问题。

此类是一个转换器,FileHelper 引擎将使用它来将整数转换为字符串,并用 0 填充到构造函数中指定的大小。

public class PaddedIntConverter:ConverterBase
{
private int _size;
public PaddedIntConverter(int size)
{
_size = size;
}

public override object StringToField(string from)
{
return int.Parse(from);
}

public override string FieldToString(object from)
{
return from.ToString().PadLeft(_size,'0');
}
}

然后可以像这样将转换器应用于您的类:

[FixedLengthRecord(FixedMode.ExactLength)]
public class MyClass{
[FieldFixedLength(7)]
[FieldConverter(typeof(PaddedIntConverter), 7)]
public int RecordCount;
}

关于c# - FileHelpers:混合分隔和固定长度记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22015002/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com