Guide pratique pour déterminer si une chaîne représente une valeur numérique (Guide de programmation C#)

Pour déterminer si une chaîne est une représentation valide d’un type numérique spécifié, utilisez la méthode statique TryParse implémentée par tous les types numériques primitifs et par les types tels que DateTime et IPAddress. L’exemple suivant montre comment déterminer si « 108 » est une chaîne int valide.

int i = 0;
string s = "108";  
bool result = int.TryParse(s, out i); //i now = 108  

Si la chaîne contient des caractères non numériques ou si la valeur numérique est trop grande ou trop petite pour le type particulier que vous avez spécifié, TryParse retourne la valeur false et affecte la valeur zéro comme paramètre de sortie. Sinon, elle retourne la valeur true et affecte la valeur numérique de la chaîne comme paramètre de sortie.

Notes

Une chaîne peut contenir uniquement des caractères numériques et ne pas être valide pour le type dont vous utilisez la méthode TryParse. Par exemple, « 256 » n’est pas une valeur valide pour byte, mais elle est valide pour int. « 98,6 » n’est pas une valeur valide pour int, mais elle est valide pour decimal.

Exemple

Les exemples suivants montrent comment utiliser TryParse avec des représentations sous forme de chaîne de valeurs long, byte et decimal.


string numString = "1287543"; //"1287543.0" will return false for a long
long number1 = 0;
bool canConvert = long.TryParse(numString, out number1);
if (canConvert == true)
Console.WriteLine("number1 now = {0}", number1);
else
Console.WriteLine("numString is not a valid long");

byte number2 = 0;
numString = "255"; // A value of 256 will return false
canConvert = byte.TryParse(numString, out number2);
if (canConvert == true)
Console.WriteLine("number2 now = {0}", number2);
else
Console.WriteLine("numString is not a valid byte");

decimal number3 = 0;
numString = "27.3"; //"27" is also a valid decimal
canConvert = decimal.TryParse(numString, out number3);
if (canConvert == true)
Console.WriteLine("number3 now = {0}", number3);
else
Console.WriteLine("number3 is not a valid decimal");

Programmation fiable

Les types numériques primitifs implémentent également la méthode statique Parse, qui lève une exception si la chaîne n’est pas un nombre valide. TryParse est généralement plus efficace, car elle retourne simplement false si le nombre n’est pas valide.

Sécurité .NET

Utilisez toujours la méthode TryParse ou Parse pour valider l’entrée utilisateur à partir de contrôles tels que des zones de texte et des zones de liste déroulante.

Voir aussi