是否可以使用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格式。 它甚至可能吗?我搜索,阅读文档,我没有看到任何类似于我需要的东西。 谢谢!
答案 0 :(得分:0)
可能是属性:
[FieldOrder(3), FieldConverter(ConverterKind.Decimal, "C")]
public decimal price;
会为你做到这一点。如您所见,我将类型更改为decimal
,这对价格/金钱更有利。
请参阅Standard Numeric Format Strings和ConverterKind
enum。
实际上我从未使用过FileHelpers。页面Arguments for the Default Converters of the library似乎表明我无法使用上面的"C"
标准格式字符串。如果是这种情况,请尝试模仿Decimal Custom Converter中的示例,或许?
答案 1 :(得分:0)
我曾经做过的是将文本文件数据填充的属性设为私有,并使用访问者创建自定义公共属性
[FieldOrder(3)]
private double _price;
public string price
{
get { return string.Format("{0}$", _price.ToString()); }
set { _price = Convert.ToDouble(value.replace('$', '')); }
}
你可能想要调整转换结果的样子,但是你明白了。
答案 2 :(得分:0)
就我而言,我正在格式化字符串数据类型,因此我定义了' 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;
答案 3 :(得分:-2)
输出时...
示例:
Console.WriteLine("{0}, {1}, {2}, {3}, ${4}", detail.CheckID, detail.IssueDate, detail.StopIndicator, detail.Payee, detail.CheckAmount);