c# - 如何确定文化的货币符号位置

标签 c# localization currency

我正在尝试确定给定文化的货币符号应该出现在值的开头还是结尾。我无法在 .Net CultureInfo 中找到这一点信息,所以我想尝试一下 hack:

var cultures = new[] {"en-US", "ar-SA", "as-IN", "tr-TR"};
foreach ( var culture in cultures ) {
    var cultureInfo = CultureInfo.CreateSpecificCulture( culture );

    var currencyValue = 1.234.ToString( "C", cultureInfo );

    var rtl = cultureInfo.TextInfo.IsRightToLeft;

    var symbolAtBeginning = currencyValue.StartsWith( cultureInfo.NumberFormat.CurrencySymbol, false, cultureInfo );
}

唉,这种方法只是有时有效;在上面的示例中,它适用于“en-US”,但不适用于其他文化。起初我以为这是因为有些文化是从右到左阅读文本,而“开始”将在右侧,但这种解释并没有得到证实。

有没有人看到我的代码中的缺陷,或者最好有更好的方法来确定货币符号的位置?

最佳答案

您可以使用 NumberFormatInfo类来确定该信息。您可以阅读 CurrencyPositive属性为正值,它将返回一个 int 来表示位置。来自 MSDN :

0  $n

1  n$

2  $ n

3  n $ 

关于c# - 如何确定文化的货币符号位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17459450/

相关文章:

c# - 使用 JQuery Timeago 显示日期时间

javascript - 使用复选框从iggrid中的选中行获取数据

iPhone:仍然不支持本地化应用程序图标?

java - 将货币解析为双倍引发异常

c# - 如何检测字符串是否为C#中的货币

c# - 使用 Mupen64Plus Unmanaged C dll API 命令填充 C# 结构

c# ILGenerator nop?

html - rtl 方向带撇号的数字

iphone - 如何针对不同的语言本地化 iPhone 应用程序?

java - 如何通过国家代码获取货币名称?