2010-01-21 4 views
6

Disons que j'ai un string, et que la valeur de string est une somme d'argent, localisée. Par localisée, je veux dire que si le pays peut utiliser des virgules au lieu de points décimaux, par exemple. (C'est juste une différence de localisation je sais si.).NET: Analyse de la devise localisée

Comment puis-je analyser un de ces string dans leurs équivalents numériques decimal? Est-ce que decimal.TryParse() reconnaîtra le formatage localisé? Comment puis-je spécifier le CultureInfo avec TryParse()?

Répondre

7

Voici un exemple de decimal.TryParse avec un CultureInfo spécifié (suédois dans ce cas):

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

Le decimal.TryParse est livré avec 2 surcharges. L'un d'eux prend les informations de la culture comme argument (CultureInfo implémente IFormatProvider):

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

L'autre prend des arguments beaucoup moins et utilise les systèmes CultureInfo:

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

Je ne suis pas complètement sûr, mais je pense que vous pouvez définir la culture actuelle du système par:

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