In C# is it possible to get a currency symbol, like '£', from the 3 character currency code, in this case 'GBP'?
Is this possible either in SQL Server or in C#?
The first two letters of the ISO 4217 three-letter code are the same as the code for the country name, and, where possible, the third letter corresponds to the first letter of the currency name. For example: The US dollar is represented as USD – the US coming from the ISO 3166 country code and the D for dollar.
The official ISO 4217 standard specifies three-letter ("Alpha-3") codes for currencies worldwide. The first two letters of these codes are usually identical with the two-letter ISO 3166-1 Alpha-2 country codes, which are well-known by internet users, as they are used for country domain suffixes.
The numeric code assigned to a currency by ISO 4217 is usually the same as the numeric code assigned to the corresponding country by ISO 3166-1. For example, USD (United States dollar) has numeric code 840 which is also the numeric code for the US (United States).
The following table provides a list of valid 4217 letter codes.
While a bit brute-force and not particularly elegant, you could do it like this:
public bool TryGetCurrencySymbol(string ISOCurrencySymbol, out string symbol) {     symbol = CultureInfo         .GetCultures(CultureTypes.AllCultures)         .Where(c => !c.IsNeutralCulture)         .Select(culture => {             try{                 return new RegionInfo(culture.Name);             }             catch             {                 return null;             }         })         .Where(ri => ri!=null && ri.ISOCurrencySymbol == ISOCurrencySymbol)         .Select(ri => ri.CurrencySymbol)         .FirstOrDefault();     return symbol != null; } and use it as follows:
string currSymbol; if(TryGetCurrencySymbol("GBP",out currSymbol)) {     Console.WriteLine("symbol is {0}", currSymbol); } If you anticipate hammering this method, perhaps it's better to build a cache up front:
public static class CurrencyTools {     private static IDictionary<string,string> map;     static CurrencyTools()     {         map = CultureInfo             .GetCultures(CultureTypes.AllCultures)             .Where(c => !c.IsNeutralCulture)             .Select(culture => {                 try{                     return new RegionInfo(culture.Name);                 }                 catch                 {                     return null;                 }             })             .Where(ri => ri!=null)             .GroupBy(ri => ri.ISOCurrencySymbol)             .ToDictionary(x => x.Key, x => x.First().CurrencySymbol);     }     public static bool TryGetCurrencySymbol(                           string ISOCurrencySymbol,                            out string symbol)     {         return map.TryGetValue(ISOCurrencySymbol,out symbol);     } } At the time of writing, on my machine etc. etc. the map contains the following mappings:
AED  د.إ. AFN  ؋ ALL  Lekë AMD  ֏ ANG  NAf. AOA  Kz ARS  $ AUD  $ AWG  Afl. AZN  ₼ BAM  КМ BBD  $ BDT  ৳ BGN  лв. BHD  د.ب. BIF  FBu BMD  $ BND  $ BOB  Bs BRL  R$ BSD  $ BTN  Nu. BWP  P BYN  Br BZD  $ CAD  $ CDF  FC CHF  CHF CLP  $ CNY  ¥ COP  $ CRC  ₡ CUP  $ CVE   CZK  Kč DJF  Fdj DKK  kr. DOP  $ DZD  د.ج. EGP  ج.م. ERN  Nfk ETB  Br EUR  € FJD  $ FKP  £ GBP  £ GEL  ₾ GHS  GH₵ GIP  £ GMD  D GNF  FG GTQ  Q GYD  $ HKD  $ HNL  L HRK  kn HTG  G HUF  Ft IDR  Rp ILS  ₪ INR  ₹ IQD  د.ع. IRR  ريال ISK  kr JMD  $ JOD  د.ا. JPY  ¥ KES  Ksh KGS  сом KHR  ៛ KMF  CF KPW  ₩ KRW  ₩ KWD  د.ك. KYD  $ KZT  ₸ LAK  ₭ LBP  ل.ل. LKR  රු. LRD  $ LYD  د.ل. MAD  د.م. MDL  L MGA  Ar MKD  ден MMK  K MNT  ₮ MOP  MOP$ MRU  MRU MUR  Rs MVR  ރ. MWK  MK MXN  $ MYR  RM MZN  MTn NAD  $ NGN  ₦ NIO  C$ NOK  kr NPR  रु NZD  $ OMR  ر.ع. PAB  B/. PEN  S/ PGK  K PHP  ₱ PKR  Rs PLN  zł PYG  ₲ QAR  ر.ق. RON  lei RSD  дин. RUB  ₽ RWF  RF SAR  ر.س. SBD  $ SCR  SR SDG  ج.س. SEK  kr SGD  $ SHP  £ SLL  Le SOS  S SRD  $ SSP  £ STN  Db SYP  ل.س. SZL  E THB  ฿ TJS  смн TMT  m. TND  د.ت. TOP  T$ TRY  ₺ TTD  $ TWD  NT$ TZS  TSh UAH  ₴ UGX  USh USD  $ UYU  $ UZS  сўм VES  Bs.S VND  ₫ VUV  VT WST  WS$ XAF  FCFA XCD  EC$ XDR  XDR XOF  CFA XPF  FCFP YER  ر.ي. ZAR  R ZMW  K If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With