2010-01-21 16 views
6

Digamos que tengo un string, y el valor de string es una cantidad de dinero, localizada. Por localizado, quiero decir que si el país puede usar comas en lugar de puntos decimales, por ejemplo. (Esa es solo una diferencia de localización que sé si)..NET: Analizando la moneda localizada

¿Cómo puedo analizar uno de estos string en sus equivalentes numéricos decimal? ¿Reconocerá decimal.TryParse() el formato localizado? ¿Cómo especifico el CultureInfo con TryParse()?

Respuesta

7

Aquí es un ejemplo de decimal.TryParse con una especificada CultureInfo (sueco en este caso):

string s = "10,95"; 
decimal d; 
if (decimal.TryParse(s, NumberStyles.Number, CultureInfo.GetCultureInfo("sv-SE"),out d)) 
{ 
    Console.WriteLine(d); 
} 
0

El decimal.TryParse viene con 2 sobrecargas. Uno de ellos toma la información de la cultura como argumento (el CultureInfo implementa IFormatProvider):

System.Decimal.TryParse(string s, System.Globalization.NumberStyles style, System.IFormatProvider provider, out decimal result) 

La otra toma mucho menos argumentos y utiliza los sistemas CultureInfo:

System.Decimal.TryParse(string s, out decimal result) 

No estoy completamente seguro, pero creo que podría establecer la cultura actual del sistema por:

Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("sv-SE");