我需要为不同的货币代码获取System.Globalization.CultureInfo。从货币代码中获取CultureInfo?
例子:欧元,英镑,美元
目前我在做基于此3个字母的货币代码在switch语句下面,显然这是不这样做的方式:
var ci = new System.Globalization.CultureInfo("en-US");
任何人都有一个干净的方式来取代使用货币代码的相同结果?
我需要为不同的货币代码获取System.Globalization.CultureInfo。从货币代码中获取CultureInfo?
例子:欧元,英镑,美元
目前我在做基于此3个字母的货币代码在switch语句下面,显然这是不这样做的方式:
var ci = new System.Globalization.CultureInfo("en-US");
任何人都有一个干净的方式来取代使用货币代码的相同结果?
短:这是不可能的。例如欧元将映射到de-DE,fr-FR,nl-NL和其他国家。没有从货币到文化的映射,因为多个国家共享货币。
我相信你想找的
var region = new System.Globalization.RegionInfo.CurrentRegion();
http://msdn.microsoft.com/en-us/library/system.globalization.regioninfo.aspx
static IEnumerable<CultureInfo> GetCultureInfosByCurrencySymbol(string currencySymbol)
{
if (currencySymbol == null)
{
throw new ArgumentNullException("currencySymbol");
}
return CultureInfo.GetCultures(CultureTypes.SpecificCultures)
.Where(x => new RegionInfo(x.LCID).ISOCurrencySymbol == currencySymbol);
}
例如
foreach (var culture in GetCultureInfosByCurrencySymbol("GBP"))
{
Console.WriteLine(culture.Name);
}
打印:
cy-GB
gd-GB
en-GB
所有我需要的是ISO代码(“GBP”)和dec使用地点的数量(2)之间的查找,所以这种方法对我有用。我只是采取了第一种文化,并使用文化.NumberFormat.CurrencyDecimalDigits在启动时构建查找。这假定所有共享货币的文化都使用相同数量的十位数,这对我的海豚来说是一个足够好的假设。 – 2014-06-27 15:53:40
当有多种文化具有相同的货币时,您希望从EUR获得什么文化? – 2012-02-10 16:02:09
许多文化共享货币。你打算如何绘制这个图?例如,EUR映射到什么地方? – tdammers 2012-02-10 16:02:44
我想这回答我的问题,我想要FR-FR,所以我将不得不为我想要的结果创建查找表 - 谢谢Jon Skeet! – Slee 2012-02-10 16:04:41