我正在尝试确定给定文化的货币符号是否应该出现在值的开头或结尾。我无法在 .Net CultureInfo 中找到这些信息,所以我想尝试一下:
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”,但不适用于其他文化。起初我认为这是因为某些文化从右到左阅读文本,而“开始”将是右侧,但这种解释并没有得到证实。
有没有人看到我的代码中的缺陷,或者最好有更好的方法来确定货币符号的位置?