是否可以使用FileHelpers库将$添加到字段中

本文关键字:添加 字段 库将 可以使 FileHelpers 是否 | 更新日期: 2024-09-19 10:06:43

是否可以使用FileHelpers库向字段添加$?我有一个对象

[DelimitedRecord("|")]
public class TradesToBloombergFileHeaders
{
    [FieldOrder(1)]
    public  Guid id;
    [FieldOrder(2)]
    public  string name;
    [FieldOrder(3)]
    public  double price;
    [FieldOrder(4), FieldConverter(ConverterKind.Date, "yyyyMMdd")]
    public  DateTime date;
}

我正在生成一个文件,希望价格为$xxx.xx格式。这可能吗?我搜索、阅读了文档,但没有发现任何与我需要的内容类似的内容。谢谢

是否可以使用FileHelpers库将$添加到字段中

可能是属性:

    [FieldOrder(3), FieldConverter(ConverterKind.Decimal, "C")]
    public decimal price;

会为你做的。正如你所看到的,我把类型改为decimal,这对价格/金钱更有利。

请参见标准数字格式字符串和ConverterKind枚举。


事实上,我从未使用过FileHelpers。库的默认转换器的Arguments页面似乎表明我不能使用像上面"C"这样的标准格式字符串。如果是这样的话,也许可以试着模仿Decimal Custom Converter的例子?

我曾经做过的是将文本文件数据填充的属性设置为私有属性,并使用访问者创建一个自定义的公共属性

[FieldOrder(3)]
private double _price;
public string price
{
    get { return string.Format("{0}$", _price.ToString()); }
    set { _price = Convert.ToDouble(value.replace('$', '')); }
}

你可能想调整转换的最终结果,但你已经明白了。

@Francis下面的回答对我不起作用,直到后来我才看到海报上对他的回答的评论。我想我会把它清理干净,并把它作为其他偶然发现这篇文章的人的答案,试图弄清楚如何格式化输出。

在我的例子中,我格式化了一个字符串数据类型,所以我定义了"StringToField"方法,但我在下面提供了解决发布者数据类型的代码。

public class MoneyFormatter : ConverterBase
{
    public override object FieldToString(string fieldValue)
    {
        var val = fieldValue == null ? 0 : Convert.ToDecimal(fieldValue); 
        return "$" + val.ToString(CultureInfo.InvariantCulture); 
    }
}
[FieldOrder(3)]
[FieldConverter(typeof(MoneyFormatter))]
public double price;

输出时。。。

示例:

Console.WriteLine("{0}, {1}, {2}, {3}, ${4}", detail.CheckID, detail.IssueDate, detail.StopIndicator, detail.Payee, detail.CheckAmount);