我需要爲不同的貨幣代碼獲取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