2016-06-10 6 views
0

Ein bisschen Hintergrund - Ich schreibe einige automatisierte Benutzerakzeptanztests für eine mobile Anwendung und ich habe nicht immer die Kontrolle über die Kultur des Geräts, auf dem die Tests ausgeführt werden auf.Wie man internationale Währungszeichenfolgen mit minimalem Code zuverlässig parst

Diese Anwendung befasst sich mit Währungen und ich fragte mich, was der beste Ansatz wäre, eine Zeichenfolge mit einem Währungsbetrag zuverlässig zu analysieren, ohne die Gerätekultur zu kennen.

Zum Beispiel möchte ich € 12,34 oder $ 12,34 oder £ 12,34 usw. zu einem doppelten Wert (oder was auch immer) analysieren.

Eine Abhilfe besteht darin, das erste Zeichen in der Zeichenfolge zu ignorieren, aber das ist nicht unbedingt eine ideale Lösung.

+1

Machen Sie eine Google-Suche auf der folgenden 'NumberStyles.Currency' gibt es viele Beispiel im Internet sowie' SO' – MethodMan

+0

Vielen Dank. Ich werde es versuchen! –

+0

@MethodMan - Die vorgeschlagene Lösung funktioniert nicht generisch. Die Währungszeichenfolge wird entsprechend der aktuellen Kultur der Umgebung analysiert, in der der Test ausgeführt wird. Die aktuelle Kultur und die Kultur/das Gebietsschema des mobilen Geräts sind jedoch nicht notwendigerweise immer dieselben. Was war meine Frage wirklich? Danke trotzdem. –

Antwort

1

Was ich schließlich getan habe, war, alle möglichen internationalen Währungssymbole wie unten im Schnipsel zu erhalten (danke an stuard) und dann meine eigene Zeichenkette gegen jeden dieser Werte zu überprüfen.

string[] currencySymbols = System.Globalization.CultureInfo.GetCultures(System.Globalization.CultureTypes.A‌​llCultures).Select(culture => culture.NumberFormat.CurrencySymbol) .Distinct() .ToArray(); 

Ich entfernte alle numerischen Zeichen, '.' und ',' von meiner eigenen Zeichenkette, verlassen Sie einfach das Währungspräfix, bevor Sie den Vergleich machen.

Ich bin mir nicht sicher, ob es die bestmögliche Lösung ist, aber es funktioniert!

Verwandte Themen