Comment : convertir une chaîne en nombre (Guide de programmation C#)
Vous pouvez convertir une chaîne en un nombre avec les méthodes de la classe Convert. Cette conversion peut être utile lors de l'obtention d'une entrée numérique à partir d'un argument de ligne de commande, par exemple. Le tableau suivant répertorie quelques unes des méthodes que vous pouvez utiliser.
Type numérique |
Méthode |
---|---|
decimal |
|
float |
|
double |
|
short |
|
int |
|
long |
|
ushort |
|
uint |
|
ulong |
Exemple
Cet exemple appelle la méthode ToInt32(String) pour convertir une entrée de type chaîne en int. Le programme intercepte les deux exceptions les plus communes qui peuvent être levées par cette méthode, FormatException et OverflowException. Si le nombre peut être incrémenté sans entraîner de dépassement au niveau de l'emplacement de stockage des entiers, le programme ajoute 1 au résultat et imprime la sortie.
static void Main(string[] args)
{
int numVal = -1;
bool repeat = true;
while (repeat == true)
{
Console.WriteLine("Enter a number between −2,147,483,648 and +2,147,483,647 (inclusive).");
string input = Console.ReadLine();
// ToInt32 can throw FormatException or OverflowException.
try
{
numVal = Convert.ToInt32(input);
}
catch (FormatException e)
{
Console.WriteLine("Input string is not a sequence of digits.");
}
catch (OverflowException e)
{
Console.WriteLine("The number cannot fit in an Int32.");
}
finally
{
if (numVal < Int32.MaxValue)
{
Console.WriteLine("The new value is {0}", numVal + 1);
}
else
{
Console.WriteLine("numVal cannot be incremented beyond its current value");
}
}
Console.WriteLine("Go again? Y/N");
string go = Console.ReadLine();
if (go == "Y" || go == "y")
{
repeat = true;
}
else
{
repeat = false;
}
}
// Keep the console open in debug mode.
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
// Sample Output:
// Enter a number between -2,147,483,648 and +2,147,483,647 (inclusive).
// 473
// The new value is 474
// Go again? Y/N
// y
// Enter a number between -2,147,483,648 and +2,147,483,647 (inclusive).
// 2147483647
// numVal cannot be incremented beyond its current value
// Go again? Y/N
// Y
// Enter a number between -2,147,483,648 and +2,147,483,647 (inclusive).
// -1000
// The new value is -999
// Go again? Y/N
// n
// Press any key to exit.
Il est également possible de convertir une string en int à l'aide des méthodes Parse ou TryParse du struct Int32. La méthode ToUInt32 utilise Parse en interne. Si le format de la chaîne n'est pas valide, Parse lève une exception tandis que TryParse retourne la valeur false sans lever d'exceptions. Les exemples suivants illustrent des appels à Parse et TryParse qui ont réussi ou échoué.
int numVal = Int32.Parse("-105");
Console.WriteLine(numVal);
// Output: -105
// TryParse returns true if the conversion succeeded
// and stores the result in the specified variable.
int j;
bool result = Int32.TryParse("-105", out j);
if (true == result)
Console.WriteLine(j);
else
Console.WriteLine("String could not be parsed.");
// Output: -105
try
{
int m = Int32.Parse("abc");
}
catch (FormatException e)
{
Console.WriteLine(e.Message);
}
// Output: Input string was not in a correct format.
string inputString = "abc";
int numValue;
bool parsed = Int32.TryParse(inputString, out numValue);
if (!parsed)
Console.WriteLine("Int32.TryParse could not parse '{0}' to an int.\n", inputString);
// Output: Int32.TryParse could not parse 'abc' to an int.
Voir aussi
Tâches
Comment : déterminer si une chaîne représente une valeur numérique (Guide de programmation C#)
Référence
Types (Guide de programmation C#)