格式化不同文化中的数字

Kje*_*sen 4 .net c# cultureinfo

假设文化不变,是否可以以格式定义不同的组分隔符 - 而不是逗号?

Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
Console.WriteLine(String.Format("{0:#,##0}", 2295));
Run Code Online (Sandbox Code Playgroud)

输出:

2,295
Run Code Online (Sandbox Code Playgroud)

期望的输出:

2.295
Run Code Online (Sandbox Code Playgroud)

不变文化是一项要求,因为来自许多不同语言环境的货币使用格式字符串格式化,这些格式字符串是用户定义的.即丹麦他们已经将价格格式定义为"{0:0}, - ",而对于爱尔兰,它可能是"€{0:#,## 0}".

PVi*_*itt 9

如果您有不同的格式字符串,这并不意味着您必须使用InvariantCulture.如果你有德国的格式字符串,例如你使用Culture("de-de")格式化这个字符串:

String.Format(CultureInfo.GetCultureInfo( "de-de" ), "{0:0},-", 2295) //will result in 2.295,-
String.Format(CultureInfo.GetCultureInfo( "en-us" ), "{0:0},-", 2295) //will result in 2,295,-
Run Code Online (Sandbox Code Playgroud)

或者,您可以指定自定义数字格式信息:

NumberFormatInfo nfi = new NumberFormatInfo( )
{
    CurrencyGroupSeparator = ":"
};
String.Format(nfi, "{0:0},-", 2295) //will result in 2:295,-
Run Code Online (Sandbox Code Playgroud)