代码之家  ›  专栏  ›  技术社区  ›  Phoenix_uy

在格式字符串上向右对齐货币

  •  3
  • Phoenix_uy  · 技术社区  · 11 年前

    我有一个 DisplayFormat 在我的C#代码中,如下所示:

    [DisplayFormat(DataFormatString = "{0:C0}")]
    

    输出结果如下: USD 50 但如何更改此显示格式以显示: 50 USD ? 货币符号在右边?

    1 回复  |  直到 11 年前
        1
  •  4
  •   welegan    11 年前

    此页面列出了所有可用于货币的自定义字符串格式,还有许多指向msdn上其他格式字符串页面的链接:

    http://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx

    具体来说,它看起来像你想要的 [DisplayFormat(DataFormatString = "{0:0C}")] ? 这似乎太简单了,你已经试过了吗?

    ---编辑---

    好吧,我想这太简单了。 C0 表示“打印编号(带有 0 小数位数),然后是货币( C )”。然而,在该页面的下方是货币模式的更多细节

    http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.currencypositivepattern(v=vs.110).aspx

    • 0个结果($n)
    • 1导致n$
    • 2个结果,单位:$n
    • n中有3个结果$

    所以你想要货币模式1或3。现在你需要想办法把它放到 DisplayFormat 属性,希望有办法做到这一点。如果没有,应该很容易将其子类化并重写tostring方法,以允许传入货币模式(除非它是 sealed 类或其他东西,在这种情况下,恶心)。