int.Parse() avec les zéros non significatifs
Comment puis-je prévenir le code ci-dessous à partir de lancer un FormatException
. J'aimerais être capable d'analyser des chaînes de caractères avec un zéro en ints. Est-il un moyen propre de faire cela?
string value = "01";
int i = int.Parse(value);
Votre exemple de code fonctionne très bien pour moi (si je change d'analyser pour analyser).
peut-être que l'utilisation
Souvent un zéro signifie que le nombre est en Octal (base 8). Est la chaîne
peut-être que l'utilisation
int.Parse(value, Culture.InvariantCulture)
Souvent un zéro signifie que le nombre est en Octal (base 8). Est la chaîne
"020"
destiné à être 20
(base 10) ou 16
(base 10)?OriginalL'auteur Taylor Leese | 2009-11-05
Vous devez vous connecter pour publier un commentaire.
Votre code fonctionne pour moi, sans un
FormatException
(une fois que vous tirer parti correctement, cette méthode):Mais cela ne l'anneau une vieille cloche; un problème que j'ai eu il y a des années que Microsoft a accepté comme un bug à l'encontre de la localisation des composants de Windows (pas .NET). Pour vérifier si vous voyez cela, exécutez ce code et laissez-nous savoir si vous obtenez un FormatException:
MODIFIER: voici mon post de Usenet, de 2007. Voir si les symptômes correspondent à la vôtre.
...et voici un rapport sur Microsoft Connect sur la question:
OriginalL'auteur Michael Petrotta
Essayer
OriginalL'auteur Nick Berardi
int i = int.Parse(de la valeur.TrimStart('0')); // capital P. édition de la réponse nécessite au moins 6 caractères changé
OriginalL'auteur John Rayner
TryParse vous permettent de confirmer le résultat de l'analyse sans lancer une exception. Pour citer MSDN
À utiliser leur exemple
}
OriginalL'auteur johnc
Vous n'avez pas à faire quoi que ce soit. L'ajout de zéros ne cause pas un FormatException.
Pour être sûr à 100%, j'ai essayé votre code, et après la correction de la
parse
àParse
il fonctionne très bien et ne lance pas d'exception.Évidemment, vous ne montrant pas de code que vous utilisez, il est donc impossible de dire où est le problème, mais ce n'est certainement pas un problème pour le
Parse
méthode pour gérer les zéros à gauche.OriginalL'auteur Guffa
Essayer
int i = Convert.ToInt32(valeur);Modifier: Hmm. Comme l'a souligné, c'est juste envelopper Int32.L'analyser. Pas sûr de savoir pourquoi vous êtes obtenir les FormatException, peu importe.
Convertir des.ToInt16 et de les Convertir.ToInt64, est en fait un statique méthode wrapper pour l'int.Méthode d'analyse. Il peut être plus lent que int.Analyser si le code environnant est équivalent.
Vous pouvez vérifier avec .Net Réflecteur
Il ne le fait pas, il utilise des int.Parse(valeur, CultureInfo.CurrentCulture), exactement de la même façon.
selon réflecteur ils sont tous les deux exactement la même.
OriginalL'auteur Wim Hollebrandse
J'ai les codes suivants peuvent être utiles:
Cela permettra de couper tous les plus grand 0s et éviter le cas de seulement un 0.
OriginalL'auteur David.Chu.ca
Pour un nombre décimal:
Pour un 16 bits, les nombres, où les zéros non significatifs sont communs:
OriginalL'auteur antonio