2010-01-21 20 views
6

Załóżmy, że mam string, a wartość string to kwota pieniędzy, zlokalizowana. Według lokalizacji mam na myśli to, że na przykład kraj może używać przecinków zamiast kropek dziesiętnych. (To jest tylko jedna różnica lokalizacji, którą znam, jeśli.).NET: Przetwarzanie zlokalizowanej waluty

Jak mogę przeanalizować jeden z tych string s w ich numerycznych odpowiednikach? decimal? Czy decimal.TryParse() rozpozna zlokalizowane formatowanie? Jak określić CultureInfo z TryParse()?

Odpowiedz

7

Oto przykład decimal.TryParse z określonym CultureInfo (Swedish w tym przypadku)

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

decimal.TryParse wyposażony 2 przeciążenia. Jeden z nich zajmuje się informacje o kulturę jako argumentu (CultureInfo realizuje IFormatProvider):

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

Drugi zajmuje znacznie mniej argumentów i używa CultureInfo systemy:

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

nie jestem całkowicie pewien, ale myślę, że można ustawić obecną kulturę systemową przez:

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