I\'m trying to use String.Format(\"{0:c}\", somevalue) in C# but am having a hard time figuring out how to configure the output to meet my needs. Here are my needs:
The "C" currency formats are great until you need a blank for 0. Here are two ways, one mentioned above, similar to the ones that I use that give you the blank for 0:
// one way
string.Format("{0:$#,##0.00;($#,##0.00);''}", somevalue)
// another way
somevalue.ToString("$#,##0.00;($#,##0.00);''")
The second technique feels more "fluent", if you like that style of code (as I do).
Here's a great reference that you might find useful, which summarises this data: http://blog.stevex.net/string-formatting-in-csharp/
If you use
string.Format("{0:$#,##0.00;($#,##0.00);''}", value)
You will get "" for the zero value and the other values should be formatted properly too.
Try something like this:
String currency = (number == 0) ? String.Empty : number.ToString("c");
Depending on if you are consistently using the same data type for all of your currency values, you could write an extension method that would make it so that your case is always met. For example if you were using the decimal type:
public static string ToCurrencyString (this decimal value)
{
if (value == 0)
return String.Empty;
return value.ToString ("C");
}