Partager via


Comment : convertir une chaîne en entier (Guide de programmation C#)

Ces exemples illustrent différentes méthodes de conversion d'une chaîne en int (nombre entier). 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. Il existe des méthodes similaires pour convertir des chaînes en autres types numériques, tels que float ou long. Le tableau suivant répertorie quelques-unes de ces méthodes.

Type numérique

Méthode

decimal

ToDecimal(String)

float

ToSingle(String)

double

ToDouble(String)

short

ToInt16(String)

long

ToInt64(String)

ushort

ToUInt16(String)

uint

ToUInt32(String)

ulong

ToUInt64(String)

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. 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.

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();    

Il est également possible de convertir une string en int à l'aide des méthodes Parse ou TryParse du struct System.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#)