5 Stimmen

Double.TryParse auf Niederländisch

Webserver, der in Niederländisch (Belgien) läuft

double output;

double.TryParse(txtTextbox1.Text, out output);

Ist dies eine gute Methode, um Text in einem niederländischen Umfeld in eine Dezimalzahl umzuwandeln? Angenommen, die Eingabe lautet "24.45" anstelle von "24,45"

2 Stimmen

Argh, jetzt habe ich dieses Lied in meinem Kopf stecken: youtube.com/watch?v=Rt6Co7EMNCU

27voto

Matt Brindley Punkte 9521

Wenn Sie das niederländische (Belgien) Zahlenformat verwenden möchten:

double output;
double.TryParse("24,45", NumberStyles.Any, CultureInfo.GetCultureInfo("nl-BE"), out output);

Oder um das US-amerikanische Zahlenformat zu verwenden:

double output;
double.TryParse("24.45", NumberStyles.Any, CultureInfo.GetCultureInfo("en-US"), out output);

Wenn Sie versuchen, "24.45" mit einem niederländischen Kultur festzulegen zu analysieren, erhalten Sie "2445" zurück, ähnlich wie wenn Sie versuchen, "24,45" mit einer US-Kultur zu analysieren, erhalten Sie "2445" zurück. Wenn Sie möchten, dass das Parsen fehlschlägt, wenn das falsche Dezimalzeichen verwendet wird, ändern Sie NumberStyles.Any, um die Flagge auszuschließen: NumberStyles.AllowThousands:

double output;
if (double.TryParse("24.45", NumberStyles.Any ^ NumberStyles.AllowThousands, CultureInfo.GetCultureInfo("nl-BE"), out output))

Wenn Ihre gesamte Anwendung auf Niederländisch ist, sollten Sie Ihre CultureInfo global ändern - hier erfahren Sie, wie es in WinForms gemacht wird und hier erfahren Sie, wie es in ASP.NET gemacht wird.

Sobald Sie eine global eingestellte CultureInfo verwenden, können Sie den obigen Code wie folgt ändern:

double output;
double.TryParse("24.45", NumberStyles.Any, CultureInfo.CurrentCulture, out output);

2voto

Peter Stuer Punkte 1905

Der korrekte Kulturcode für das niederländische Belgien lautet "nl-BE", daher sollten Sie das anstelle des oft vorgeschlagenen "nl-NL" verwenden, das Ihnen die Variante der niederländischen Kultureinstellungen für die Niederlande geben würde.

double output;
double.TryParse("24.45", NumberStyles.Any, CultureInfo.GetCultureInfo("nl-BE"), out output);

Sie finden eine vollständige Liste der Kulturcodes unter http://arvindlounge.spaces.live.com/blog/cns!C9061D5B358A2804!263.entry.

0voto

Paolo Tedesco Punkte 52228

Sie sollten die Kultur auf Niederländisch einstellen. Die Kultur bestimmt, wie Zeichenfolgen, die Zahlen darstellen, analysiert werden.

Überprüfen Sie diesen Artikel: WIE: Kultur programmgesteuert in einer ASP.NET-Anwendung festlegen, er erklärt sowohl wie die Kultur für die ASP.NET-Anwendung als auch für den aktuellen Thread festgelegt wird.

0voto

Mario Menger Punkte 5832

Wenn die regionalen Einstellungen Ihres Servers auf niederländische Zahlen eingestellt sind, versuchen Sie dies:

double output;
double.TryParse(txtTextbox1.Text, System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.CurrentCulture, out output);

0voto

Fredrik Mörk Punkte 151006

Sie können die Überlastung verwenden, die es Ihnen ermöglicht, das Gebietsschema anzugeben (Beispiel mit schwedischem Gebietsschema, da ich weiß, wie das funktioniert):

double Ergebnis;
if (double.TryParse("24,95", NumberStyles.AllowDecimalPoint, CultureInfo.GetCultureInfo("sv-SE"), out Ergebnis))
{
    Console.WriteLine(Ergebnis.ToString());
}

Wenn ich "24.95" in den obigen Aufruf von TryParse übergeben würde, würde es falsch zurückgeben, da das schwedische Dezimalzeichen "," ist.

Sie können mit dem NumberStyles-Parameter experimentieren, um das genaue Verhalten zu erhalten, das Sie möchten. Wenn ich zum Beispiel zu NumberStyles.Any wechseln würde und die Methode mit der Eingabe 24.95 oben aufrufen würde, gibt TryParse true und das Ergebnis wäre 2495, was möglicherweise nicht das ist, was Sie möchten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X