Comment puis-je accepter des chaînes comme «1 250,00 $» et les convertir en décimales en C #?
Question
Comment puis-je accepter des chaînes telles que " 1 250,00 $ " et le convertir en décimal en C #?
Dois-je simplement remplacer ("$", "") et (",", "" ou y a-t-il une autre façon de gérer ce type de saisie?
La solution
Avez-vous essayé Decimal.Parse avec l'option AllowCurrencySymbol (et d'autres options de support)?
var d = Decimal.Parse(input,
NumberStyles.AllowCurrencySymbol |
NumberStyles.AllowDecimalPoint |
NumberStyles.AllowThousands);
Autres conseils
Est-ce que je fais juste un
Remplacer ("$", "")
etRemplacer (",", ",")
[ ?]
Non. D'une part, un code comme celui-ci n'est pas amusant à maintenir. Deuxièmement, «$» n'est pas le seul symbole monétaire dans le monde et «,» n'est pas le seul séparateur des milliers. C’est-à-dire que le code que vous pensez rend les problèmes de mondialisation difficiles.
[J] ai-je une autre façon de gérer ce type d’informations?
Oui. Utilisez Decimal.Parse
avec NumberStyles.Currency
:
string s = "$1,250.00";
decimal d = decimal.Parse(s, NumberStyles.Currency);
maintenant avec le formatage:)
decimal val = Decimal.Parse(
Value.Replace(" ", ""),
NumberStyles.AllowThousands
| NumberStyles.AllowDecimalPoint
| NumberStyles.AllowCurrencySymbol
);
Cela devrait faire l'affaire:
string money = "$1,250.00";
money = money.Replace(',' ');
decimal test = Convert.ToDecimal(money);