我正在尝试确定给定文化的货币符号应该出现在值的开头还是结尾。我无法在 .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/