Conversion de string à int
En langage de programmation C#, vous pouvez convertir une représentation sous forme de chaîne de caractères (string) d'un nombre en un entier (int) en utilisant les méthodes suivantes :
- Avec la méthode Parse()
- Avec la classe Convert
- Avec la méthode TryParse() (cette méthode est recommandée)
Méthode Parse
Les méthodes Parse() sont disponibles pour tous les types de données primitifs. C'est le moyen le plus simple de convertir une chaîne de caractères string en entier int. Les méthodes Parse sont disponibles pour les types d'entiers signés 16, 32, 64 bits :
- Int16.Parse()
- Int32.Parse()
- Int64.Parse()
La syntaxe est la suivante :
Parse(string s) |
Parse(string s, NumberStyles style) |
Parse(String s, NumberStyles style, IFormatProvider provider) |
Il faut jusqu'à 3 paramètres, une chaîne de caractères étant obligatoire pour convertir la chaîne de caractères (string) au format entier (int), le deuxième paramètre contient le style de nombre spécifiant le style du nombre à représenter et le troisième paramètre représente le format spécifique à la culture de la chaîne de caractères.
L'exemple suivant illustre la conversion de chaînes de caractères numériques en nombres entiers :
- using System;
- using System.Globalization;
-
- public class Program {
- public static void Main() {
- var int1 = Int16.Parse("100"); // Retourne 100
- var int2 = Int16.Parse("(100)", NumberStyles.AllowParentheses); // Retourne -100
- var int3 = int.Parse("30,000", NumberStyles.AllowThousands, new CultureInfo("fr-ca")); // Retourne 30000
- var int4 = int.Parse("$ 10000", NumberStyles.AllowCurrencySymbol); // Retourne 10000
- var int5 = int.Parse("-100", NumberStyles.AllowLeadingSign); // Retourne -100
- var int6 = int.Parse(" 100 ", NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite); // Retourne 100
- var int7 = Int64.Parse("2147483649"); // Retourne 2147483649
- }
- }
Comme vous pouvez le voir dans l'exemple ci-dessus, une chaîne de caractères numérique valide peut être convertie en un entier. La méthode Parse() permet la conversion de la chaîne de caractères numérique dans différents formats en un entier à l'aide de l'énumération NumberStyles, par exemple une chaîne de caractères avec des parenthèses, une chaîne de caractères numérique spécifique à la culture, avec un symbole monétaire,...
Cependant, la chaîne de caractères passée doit être une chaîne numérique valide ou dans l'intervalle du type sur lequel elles sont appelées. Les instructions suivantes lèvent des exceptions.
- using System;
-
- public class Program {
- public static void Main() {
- var int1 = int.Parse(null); // Déclenche FormatException
- var int2 = int.Parse(""); // Déclenche FormatException
- var int3 = int.Parse("100.00"); // Déclenche FormatException
- var int4 = int.Parse( "100a"); // Déclenche FormatException
- var int5 = int.Parse(2147483649); // Déclenche une exception de débordement en utilisant Int64.Parse()
- }
- }
Classe Convert
Une autre façon de convertir une chaîne de caractères en entier consiste à utiliser la classe statique Convert. La classe Convert comprend différentes méthodes convertissant le type de données de base en un autre type de données de base. La classe Convert inclut les méthodes suivantes pour convertir de différents types de données en type int :
- Convert.ToInt16()
- Convert.ToInt32()
- Convert.ToInt64()
La méthode Convert.ToInt16() renvoie l'entier 16 bits, par exemple. Bref, le Convert.ToInt32() renvoie des entiers 32 bits, par exemple int et Convert.ToInt64() renvoie l'entier 64 bits, par exemple long.
- using System;
-
- public class Program {
- public static void Main() {
- var int1 = Convert.ToInt16("100"); // Retourne un short
- var int2 = Convert.ToInt16(null); // Retourne un 0
- var int3 = Convert.ToInt32("233300"); // Retourne int
- var int4 = Convert.ToInt32("1234",16); // Retourne 4660 - Hexadécimal de 1234
- var int5 = Convert.ToInt64("1003232131321321"); // Retourne long
- // Lèves des exceptions :
- var int6 = Convert.ToInt16(""); // Déclenche FormatException
- var int7 = Convert.ToInt32("30,000"); // Déclenche FormatException
- var int8 = Convert.ToInt16("(100)"); // Déclenche FormatException
- var int9 = Convert.ToInt16("100a"); // Déclenche FormatException
- var int10 = Convert.ToInt16(2147483649); // Déclenche OverflowException
- }
- }
Méthode TryParse
Les méthodes TryParse() sont disponibles pour tous les types primitifs afin de convertir la chaîne de caractères en type de données appelant. C'est la méthode recommandée pour convertir une chaîne de caractères (string) en un entier (int).
La méthode TryParse() convertit la représentation sous forme de chaîne de caractères d'un nombre en son équivalent entier signé 16, 32 et 64 bits. Il renvoie un booléen indiquant si la conversion a réussi ou échoué et donc il ne lève jamais d'exceptions. Les méthodes TryParse() sont disponibles pour tous les types entiers :
- Int16.TryParse()
- Int32.TryParse()
- Int64.TryParse()
La syntaxe est la suivante :
bool Int32.TryParse(string s, out int result) |
bool Int32.TryParse(string s, NumberStyle style, IFormatProvider provider, out int result) |
La méthode TryParse() prend 3 paramètres identiques à la méthode Parse() ayant la même fonctionnalité. L'exemple suivant illustre la méthode TryParse() :
L'exemple suivant illustre la conversion d'une chaîne de caractères numérique non valide :
Dans l'exemple ci-dessus, numberStr = "123456as" étant une chaîne de caractères numérique non valide. Cependant, la méthode Int32.TryParse() renverra false au lieu de lever une exception. Ainsi, la méthode TryParse() est le moyen le plus sûr de convertir une chaîne de caractères numérique en type entier lorsque nous ne savons pas si la chaîne de caractères est une chaîne de caractères numérique valide ou non.