C#创建自定义NumberFormatInfo,当货币值为$ 0.00时显示"Free"

Jus*_*tin 4 .net c# currency tostring iformatprovider

我需要在我的ASP.NET MVC应用程序中显示货币,但当货币为0时,我希望它显示"Free"(当然是本地化的!)而不是0.00美元.

所以,当我有这样的事情......

Decimal priceFree = 0.00;
Decimal priceNotFree = 100.00;

priceFree.ToString("C");
priceNotFree.ToString("C");
Run Code Online (Sandbox Code Playgroud)

输出为"$ 0.00""$ 100.00"

我希望它是"免费""100.00美元"

我想我可以使用的ToString(字符串格式,的IFormatProvider formatProvider)方法来做到这一点,但我不知道如何去做.很明显我想重新使用尽可能多的NumberFormatInfo尽可能的和唯一覆盖它当输入为0.在这种情况下,我可以简单的返回一个包含我的"自由"的字符串的本地化资源.

那我该怎么做?

谢谢

Viv*_*Viv 16

使用

.ToString("$###.00;;Free")
Run Code Online (Sandbox Code Playgroud)

  • @Justin:你可以本地化格式字符串,就像你的"免费"字符串一样容易......(或者从本地化的"Free"字符串组成它). (3认同)
  • +1,很好.对于之前没有见过的人:["" Section Separator](http://msdn.microsoft.com/en-us/library/0c899ak8.aspx#SectionSeparator). (2认同)
  • 本地化时这种方法并不好 (2认同)