是否可以使用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格式。这可能吗?我搜索、阅读了文档,但没有发现任何与我需要的内容类似的内容。谢谢
可能是属性:
[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);