2014-10-01 50 views
0

我試圖將ISO貨幣代碼轉換爲貨幣符號,但RegionInfo的返回值似乎已交換。這裏是我的代碼:RegionInfo.ISOCurrencySymbol返回CurrencyEnglishName而不是

foreach (CultureInfo nfo in CultureInfo.GetCultures(CultureTypes.SpecificCultures)) 
{ 
    RegionInfo region = new RegionInfo(nfo.LCID); 
    Log("ISO: " + region.ISOCurrencySymbol); 
    Log("Symbol: " + region.CurrencySymbol); 
} 

編輯:Log() - 方法只是打印一個字符串出於調試目的。

對於每種語言,我得到這樣的:

  • ISO:美元(應爲 「USD」)
  • 符號:USD(應爲 「$」)

怎麼可能這發生了,我怎麼修復它?

Edit2:測試了一些:RegionInfo中的大多數字段似乎都是空的,.CurrencyNativeName引發NotImplementedException。這裏發生了什麼?

+0

什麼是'Log'功能嗎? – Arion 2014-10-01 11:25:52

+0

這只是一個調試日誌 – Bob 2014-10-01 11:28:09

+1

它在我的機器上打印'USD'和'$'。你確定嗎?你的環境是什麼? (.NET Framework版本或其他..) – 2014-10-01 12:59:59

回答

0

我知道它的晚,但這裏對我的作品

 public List<string> getCurrencyCode() 
     { 
      List<string> CountryList = new List<string>(); 
      List<string> CurrencyList = new List<string>(); 
      CultureInfo[] getCultureInfo = CultureInfo.GetCultures(CultureTypes.SpecificCultures); 

      foreach (CultureInfo getCulture in getCultureInfo) 
      { 
       RegionInfo ri = new RegionInfo(getCulture.LCID); 
       //Region includes country name and currency symbols 
       //make sure no repeats 
       if (!(CountryList.Contains(ri.EnglishName))) 
       { 
        CountryList.Add(ri.EnglishName); 
        CurrencyList.Add(ri.ISOCurrencySymbol);      
       } 
      } 
      return CurrencyList; 
     }