Wie kann ich Strings wie „$ 1.250,00“ akzeptieren und es in eine Dezimalzahl in C # konvertieren?
Frage
Wie kann ich akzeptieren Zeichenkette wie "$ 1,250.00" und wandelt es in eine Dezimalzahl in C #?
Sie ersetze ich nur einen ( „$“, „“) und ( „“, ‚‘) oder gibt es eine andere Art und Weise ich diese Art von Input umgehen sollte?
Lösung
Haben Sie Decimal.Parse mit der AllowCurrencySymbol Option versucht (und andere unterstützende Optionen)?
var d = Decimal.Parse(input,
NumberStyles.AllowCurrencySymbol |
NumberStyles.AllowDecimalPoint |
NumberStyles.AllowThousands);
Andere Tipps
Habe ich einfach ein
Replace("$", "")
undReplace(",", "")
[?]
Nein. Zum einem Code wie dieser ist nicht Spaß zu halten. Zweitens ist ‚$‘ nicht das einzige Währung Symbol in der Welt, und ‚‘ ist nicht die einzigen Tausende separtor. Das heißt, Code wie Sie denken, Fragen der Globalisierung erschwert.
[I] s gibt es eine andere Art und Weise ich diese Art von Input umgehen sollte?
Ja. Verwenden Sie Decimal.Parse
mit NumberStyles.Currency
:
string s = "$1,250.00";
decimal d = decimal.Parse(s, NumberStyles.Currency);
jetzt mit Formatierung:)
decimal val = Decimal.Parse(
Value.Replace(" ", ""),
NumberStyles.AllowThousands
| NumberStyles.AllowDecimalPoint
| NumberStyles.AllowCurrencySymbol
);
Das sollte es tun:
string money = "$1,250.00";
money = money.Replace('$',' ');
decimal test = Convert.ToDecimal(money);