2010-01-21 14 views
6

Diciamo che ho uno string e che il valore di string è una quantità di denaro, localizzata. Per localizzazione, intendo che se il paese può utilizzare virgole anziché punti decimali, ad esempio. (Questa è solo una differenza di localizzazione so se)..NET: analisi della valuta localizzata

Come analizzare uno di questi string nei rispettivi equivalenti numerici decimal? decimal.TryParse() riconoscerà la formattazione localizzata? Come si specifica CultureInfo con TryParse()?

risposta

7

Ecco un esempio di decimal.TryParse con un determinato CultureInfo (svedese in questo caso):

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

La decimal.TryParse viene fornito con 2 sovraccarichi. Uno di loro prende informazioni cultura come argomento (il CultureInfo implementa IFormatProvider):

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

L'altro vuole molto meno argomenti e utilizza i sistemi CultureInfo:

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

Io non sono completamente sicuro, ma penso che potresti impostare l'attuale cultura di sistema:

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