DevTrain Startseite Visual Studio 1 Magazin  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren



 

Forum: ASP.NET | Thema: Re: Double Wert Konvertieren bei Wechsel der CultureInfo | Von: Jörg Wiedmann ( 09.04.2003 19:05)

Hallöchen nochmals,

Ich habe meinen Fehler gefunden.
Wen es interessiert, wie man einen String in einen Double konvertiert und dabei gleichzeitig die CultureInfo wechselt hier die Lösung.

Natürlich muss man zuerst prüfen was für eine CultureInfo in dem Wert des Strings steckt.

1. Ich suche nach dem DezimalZeichen in dem String

//Überprüfung auf Decimal oder Trennzeichen
char[] chPoint = {'.'};
char[] chKommata = {','};
string[] arrPointSeparator = Digit.Split(chPoint);
string[] arrKommataSeparator = Digit.Split(chKommata);

int iArrPoint = arrPointSeparator.Length;
int iArrKommata = arrKommataSeparator.Length;

// Folgende Variable dient zur Überprüfung ob eine
// Konvertierung notwendig ist und welche.
int iApprove = iArrPoint + iArrKommata;

//###################################################################################################
// Zahlenbeispiele:
//
// Zahl iArrPoint iArrKommata iApprove Behandlung Begründung
// 8000 1 1 2 Keine Ganzzahl
// 8000.00 2 1 3 Convert US-Format(.)
// 8000,00 1 2 3 Convert DE-Format(,)
// 8.000,00 2 2 4 Exception Tausender Separator
//
//###################################################################################################

string strDigitCulture;

//Welche CultureInfo beinhaltet der Wert ?
if(iArrPoint - iArrKommata == 1)
{
strDigitCulture = "en-US";
}
else
{
strDigitCulture = "de-DE";
}

// Stimmt die CultureInfo mit der gewünschten überein
// dann wird keine Konvertierung vorgenommen(iApprove = 2)
if(strDigitCulture == UserCultureInfo)
{
iApprove = 2;
}


switch (iApprove)
{
case 2:
strConvertedDigit = Digit;
break;
case 3:
strConvertedDigit = ConvertDigit(Digit,strDigitCulture,UserCultureInfo);
break;
case 4:
// Nichts zu Konvertieren
// TODO: Exception werfen
strConvertedDigit = "Keine TausenderSeparatoren im Moment unterstützt";
break;
default:
break;
}

return strConvertedDigit;
}

2. In der Methode die ich im Switch Case Statement aufrufe, erstellt dann zuerst einen Double von dem Wert mit der herausgefundenen CultureInfo, danach stelle ich die CultureInfo in die gewünschte Culture und erzeuge dann einen String. Stelle die vorherige CultureInfo wieder her und übergebe meiner aufrufenden Methode den String.

Hurra Hurra....so funktioniert es mal.
Aber vielleicht geht es ja noch einfacher.

Viele Grüße
Euer Jörg



Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!

 Betreff:
 Nachricht: Den Beitrag finden Sie nun unter: http://beta.devtrain.de/foren Die Benutzerdaten und Foreninhalte von beta.devtrain.de und www.devtrain.de sind die selben.
Sie können sich dort sogar per RSS über neue Inhalte informieren lassen.
Bei Problemen bitte direkt Mail an asp [AT] ppedv.de.

 Signatur:

  



Login
Username:


Passwort:






Passwort vergessen?

Visual Studio 1 Magazin

© Copyright 2003 ppedv AG