C# 如何获取当前区域性格式的数字货币

C# 如何获取当前区域性格式的数字货币,c#,globalization,cultureinfo,currency-formatting,C#,Globalization,Cultureinfo,Currency Formatting,使用下面的方法,可以获得当前区域性的2位数货币。 string.Format(CultureInfo.CurrentCulture,“{0:C2}”,金额) 将结果获取为:$1000.00 我们如何使用美元或欧元等货币符号获取货币,如下所示 预期结果:1000.00美元这可以通过使用RegionInfo类实现: decimal amount = 1000m; CultureInfo culture = CultureInfo.CurrentCulture; RegionInfo region

使用下面的方法,可以获得当前区域性的2位数货币。
string.Format(CultureInfo.CurrentCulture,“{0:C2}”,金额)
将结果获取为:
$1000.00

我们如何使用美元或欧元等货币符号获取货币,如下所示


预期结果:
1000.00美元

这可以通过使用
RegionInfo
类实现:

decimal amount = 1000m;

CultureInfo culture = CultureInfo.CurrentCulture;
RegionInfo region = RegionInfo.CurrentRegion; //or new RegionInfo(...)
string formattedCurrency = string.Format(CultureInfo.CurrentCulture, "{0:C2} {1}", amount, region.ISOCurrencySymbol);  
在上面的代码中,
formattedCurrency
生成的字符串值为
“$1000.00 USD”

如果您不希望使用货币符号,可以执行类似于
替换(culture.NumberFormat.CurrencySymbol,”)
的操作,或者使用
N
说明符而不是
C
。这两种方法的结果都是价值
“1000.00美元”
(我所在的地区/文化)。 此问题将讨论此特定主题:

请注意,接受的答案(使用
N
)在所有文化中似乎都不友好。

这可以通过使用
RegionInfo
类来实现:

decimal amount = 1000m;

CultureInfo culture = CultureInfo.CurrentCulture;
RegionInfo region = RegionInfo.CurrentRegion; //or new RegionInfo(...)
string formattedCurrency = string.Format(CultureInfo.CurrentCulture, "{0:C2} {1}", amount, region.ISOCurrencySymbol);  
在上面的代码中,
formattedCurrency
生成的字符串值为
“$1000.00 USD”

如果您不希望使用货币符号,可以执行类似于
替换(culture.NumberFormat.CurrencySymbol,”)
的操作,或者使用
N
说明符而不是
C
。这两种方法的结果都是价值
“1000.00美元”
(我所在的地区/文化)。 此问题将讨论此特定主题:

请注意,接受的答案(使用
N
)在所有文化中似乎都不友好。

是否有理由取代过度使用N?反之亦然?当然可以@Code陌生人。请参阅关于此答案的第一条评论:。我对其他文化的表现没有太多的经验,所以这里似乎更倾向于替换。另一个答案是将克隆的
NumberFormatInfo
上的CurrencySymbol空白。有几种方法可以剥这只猫的皮。有没有理由用N来代替呢?反之亦然?当然可以@Code陌生人。请参阅关于此答案的第一条评论:。我对其他文化的表现没有太多的经验,所以这里似乎更倾向于替换。另一个答案是将克隆的
NumberFormatInfo
上的CurrencySymbol空白。有几种方法可以剥这只猫的皮。