Come posso accettare stringhe come "$ 1.250,00" e convertirle in un decimale in C #?
Domanda
Come posso accettare stringhe come " $ 1.250,00 " e convertirlo in un decimale in C #?
Devo solo sostituire (" $ " ;, " " ") e (", " ;, " ") o esiste un modo diverso di gestire questo tipo di input?
Soluzione
Hai provato Decimal.Parse con l'opzione AllowCurrencySymbol (e altre opzioni di supporto)?
var d = Decimal.Parse(input,
NumberStyles.AllowCurrencySymbol |
NumberStyles.AllowDecimalPoint |
NumberStyles.AllowThousands);
Altri suggerimenti
Devo solo fare un
Sostituisci (" $ " ;, " ")
eSostituisci (", " ;, " " ")
[ ?]
No. Per uno, il codice come questo non è divertente da mantenere. In secondo luogo, "$" non è l'unico simbolo di valuta al mondo e "," non è le uniche migliaia di separtor. Cioè, il codice come stai pensando rende difficili i problemi di globalizzazione.
[I] c'è un modo diverso di gestire questo tipo di input?
Sì. Usa Decimal.Parse
con NumberStyles.Currency
:
string s = "$1,250.00";
decimal d = decimal.Parse(s, NumberStyles.Currency);
ora con formattazione :)
decimal val = Decimal.Parse(
Value.Replace(" ", ""),
NumberStyles.AllowThousands
| NumberStyles.AllowDecimalPoint
| NumberStyles.AllowCurrencySymbol
);
Questo dovrebbe fare il trucco:
string money = "$1,250.00";
money = money.Replace(',' ');
decimal test = Convert.ToDecimal(money);