L'une des pièces amusantes de multi-programmation culturelle est les formats de nombre.
- Les américains utilisent de 10 000.50
- Les allemands utilisent 10.000,50
- Français 10 000,50
Ma première approche serait de prendre de la chaîne, de l'analyser en arrière, jusqu'à ce que je rencontre un séparateur et de l'utiliser comme mon séparateur décimal. Il y a un défaut évident avec qui: 10.000 serait interprété comme 10.
Une autre approche: si la chaîne contient 2 différents caractères non numériques, utiliser le dernier comme séparateur décimal et rejeter les autres. Si j'ai seulement un, vérifier si elle se produit plus d'une fois et jeter si elle n'. Si elle n'apparaît qu'une fois, vérifier si elle a 3 chiffres après elle. Si oui, jetez-il, sinon l'utiliser comme séparateur décimal.
L'évidence de la "meilleure solution" serait de détecter la culture de l'Utilisateur ou le Navigateur, mais cela ne fonctionne pas si vous avez un Français à l'aide d'un fr-fr/Windows Navigateur.
L' .net Framework contient certains mythique de la magie noire virgule flottante analyseur c'est mieux que d' Double.(Try)Parse()
, en essayant de détecter automatiquement le format de nombre?