2012-02-10 18 views
7

Necesito obtener System.Globalization.CultureInfo para diferentes códigos de moneda.obtener CultureInfo desde un código de moneda?

Ejemplos: EUR, GBP, USD

Actualmente estoy haciendo lo siguiente dentro de una sentencia switch basado en el código de moneda de 3 letras, obviamente esto no es la manera de hacerlo:

var ci = new System.Globalization.CultureInfo("en-US"); 

¿Alguien tiene una manera limpia de obtener los mismos resultados usando el código de moneda?

+1

¿Qué cultura esperaría obtener de EUR, cuando hay varias culturas con la misma moneda? –

+0

Muchas culturas comparten monedas. ¿Cómo vas a mapear esto? ¿A qué se asigna el mapa de euros, por ejemplo? – tdammers

+1

Supongo que eso responde mi pregunta, me gustaría tener FR-FR, así que tendré que crear una tabla de búsqueda para los resultados que quiero, ¡gracias Jon Skeet! – Slee

Respuesta

12

Corto: Eso no es posible. El EUR, por ejemplo, se correlacionaría con de-DE, fr-FR, nl-NL y otros países. No existe un mapeo entre Moneda y cultura, ya que varios países comparten monedas.

16
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); 
} 

Por ejemplo

foreach (var culture in GetCultureInfosByCurrencySymbol("GBP")) 
{ 
    Console.WriteLine(culture.Name); 
} 

impresiones:

cy-GB 
gd-GB 
en-GB 
+0

Todo lo que necesitaba era una búsqueda entre el código ISO ("GBP") y el número de lugares de dec para usar (2), por lo que este método funcionó para mí. Acabo de tomar la primera cultura y utilicé culture.NumberFormat.CurrencyDecimalDigits para crear una búsqueda en el inicio. Esto supone que todas las culturas que comparten una moneda utilizan el mismo número de lugares de dec, lo cual es una suposición bastante buena para mis marsopas. –

Cuestiones relacionadas