Wie kann ich Strings wie „$ 1.250,00“ akzeptieren und es in eine Dezimalzahl in C # konvertieren?

StackOverflow https://stackoverflow.com/questions/1210553

  •  06-07-2019
  •  | 
  •  

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?

War es hilfreich?

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("$", "") und Replace(",", "") [?]

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
);

http://www.codeproject.com/KB/cs/Eduardo_Sierra.aspx

Das sollte es tun:


      string money = "$1,250.00";
      money = money.Replace('$',' ');
      decimal test = Convert.ToDecimal(money);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top