Comment puis-je accepter des chaînes comme "$ 1,250.00" et le convertir en décimal en C#? Est-ce que je fais juste un remplacement ("$", "") et (",", "") ou y a-t-il une manière différente de gérer ce type d'entrée?
3
A
Répondre
20
Avez-vous essayé Decimal.Parse avec l'option AllowCurrencySymbol (et d'autres options de soutien)?
var d = Decimal.Parse(input,
NumberStyles.AllowCurrencySymbol |
NumberStyles.AllowDecimalPoint |
NumberStyles.AllowThousands);
5
maintenant avec la mise en forme :)
decimal val = Decimal.Parse(
Value.Replace(" ", ""),
NumberStyles.AllowThousands
| NumberStyles.AllowDecimalPoint
| NumberStyles.AllowCurrencySymbol
);
5
Est-ce que je fais juste un
Replace("$", "")
etReplace(",", "")
[?]
No. Pour un, le code comme celui-ci n'est pas amusant de maintenir. Deuxièmement, «$» n'est pas le seul symbole monétaire dans le monde, et «,» n'est pas le seul segregor des milliers. C'est-à-dire que le code comme vous pensez rend les problèmes de la mondialisation difficiles.
[I] s y a-t-il une façon différente de gérer ce type d'entrée?
Oui. Utilisez Decimal.Parse
avec NumberStyles.Currency
:
string s = "$1,250.00";
decimal d = decimal.Parse(s, NumberStyles.Currency);
-2
Cela devrait faire l'affaire:
string money = "$1,250.00";
money = money.Replace('$',' ');
decimal test = Convert.ToDecimal(money);
Questions connexes
- 1. Comment convertir des nombres entre hexadécimal et décimal en C#?
- 2. Comment convertir un hex en décimal en utilisant VB.NET?
- 3. Comment convertir des chaînes en entiers en Python?
- 4. Convertir un hexagone en décimal dans le script make?
- 5. WCF - Comment accepter les chaînes longues en tant que paramètres
- 6. Convertir une chaîne en entier avec décimal en Python
- 7. Dans Sql Server, comment convertir des chaînes binaires en binaire?
- 8. Oracle: Comment convertir un hex en décimal dans Oracle SQL?
- 9. comment convertir des chaînes comme "ceci est un exemple" en "ceci est un exemple" sous ruby
- 10. Comment convertir des données binaires en chaînes et revenir en Java?
- 11. Comment convertir un nombre décimal en temps ou vice versa
- 12. Comaprison décimal en script Java
- 13. Comment convertir un flottant en chaîne indépendamment des paramètres régionaux?
- 14. limitation des chiffres du point décimal en C++
- 15. Quels sont les types de chaînes les plus utilisés en C++ et comment les convertir?
- 16. en utilisant accepter: en jquery
- 17. chaînes en C++
- 18. En SQL comment puis-je convertir un type de données monétaire en nombre décimal?
- 19. Il y a des chaînes en C++?
- 20. Avantages et inconvénients des différents types de chaînes en C++
- 21. Conversion de chaînes à enum en C++?
- 22. Comment convertir une chaîne strings en chaîne en C++?
- 23. Rembourrage des chaînes STL en C++
- 24. Comment convertir des nombres entre différentes bases en JavaScript?
- 25. Convertir la liste des longs en tableau de chaînes
- 26. convertir des chaînes en casse de titre dans JSTL
- 27. en utilisant des chaînes de format avec sprintf() en C++
- 28. Conversion de décimal en caractère ASCII
- 29. Y at-il un moyen facile en PHP de convertir des chaînes comme '256M', '180K', '4G' en leurs équivalents entiers?
- 30. Fractionnement de chaînes en C++
Puis-je demander pourquoi vous remplacez les espaces par des bouteilles vides au lieu de les tailler? –
J'ai énuméré l'URL pour le site que j'ai saisi le code, je ne l'ai pas écrit moi-même (pourquoi passer quelques minutes à réinventer les roues quand un google de 15 secondes obtient la réponse?). L'exemple donné sur le site est pour quand quelqu'un a placé un espace après le symbole monétaire –
Yep. Vous avez seulement besoin d'ajouter NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite au lieu de faire le remplacement de la chaîne. On peut soutenir que supprimer les espaces au milieu serait incorrect car cela pourrait potentiellement valider quelque chose qui n'est pas correct. – tvanfosson