2011-03-02 750 views

回答

3

框架中沒有任何內容可以專門處理此問題,但您可以使用貨幣縮寫和符號的Dictionary來解決此問題。

2

我不知道內置於框架什麼,但如果你有你感興趣的貨幣名單,這聽起來像使用一個完美的地方一個Dictionary<string, string>可能一個Dictionary<string, char>(我不知道是否有任何多字符符號,但我不會感到驚訝)。

+1

舊的德國馬克標誌是DM,所以我打賭還有一些其他的。 – 2011-03-02 10:57:02

+1

'KWD','SAR','AED'是三個字母的貨幣首字母縮略詞。大多數貨幣沒有符號,但使用[ISO 4217](http://en.wikipedia.org/wiki/ISO_4217)中列出的ISO縮寫。如果您的應用已本地化,則應使用適當的符號。例如'Kuwaiti Dinar'是'KWD'還有'د.ك' – 2012-06-13 05:38:42

1

您可以使用ArrayList /哈希表來存儲歐元,美元,英鎊與各自的Unicode 0x20A0 [EUR],0x0024 [美元] & 0x00A3 [GBP]。

當您需要或onChange事件的下拉列表時,您可以從此ArrayList /哈希表中獲取數據。

2

我一直在尋找一些動態的解決方案,我發現這一點:

RegionInfo regionInfo = (from culture in CultureInfo.GetCultures(CultureTypes.InstalledWin32Cultures) 
            where culture.Name.Length > 0 
            let region = new RegionInfo(culture.LCID) 
            where String.Equals(region.ISOCurrencySymbol, "EUR", StringComparison.InvariantCultureIgnoreCase) 
            select region).First(); 

string currencySymbol = regionInfo.CurrencySymbol; 
+0

比特幣通過什麼? – Henrik 2012-11-02 09:22:06

3

您可以通過所有的文化,直到你找到一個匹配運行:

public string GetCurrencySymbolFromAbbreviation(string abbreviation) 
{ 
    foreach (CultureInfo nfo in CultureInfo.GetCultures(CultureTypes.SpecificCultures)) 
    { 
     RegionInfo region = new RegionInfo(nfo.LCID); 
     if (region.ISOCurrencySymbol == abbreviation) 
     { 
      return region.CurrencySymbol; 
     } 
    } 
    return null; 
} 
0

簡單的方法是,你可以使用數據庫與貨幣名稱,貨幣符號。 當您選擇貨幣名稱時,它會自動選擇貨幣符號,您可以使用該貨幣符號。