Question Comment puis-je convertir String en Int?


j'ai un TextBoxD1.Text et je veux le convertir en un int pour le stocker dans une base de données.

Comment puis-je faire ceci?


420
2018-06-19 20:02


origine


Réponses:


Essaye ça:

int x = Int32.Parse(TextBoxD1.Text);

ou mieux encore:

int x = 0;

Int32.TryParse(TextBoxD1.Text, out x);

Aussi, depuis Int32.TryParse retourne un bool vous pouvez utiliser sa valeur de retour pour prendre des décisions concernant les résultats de la tentative d'analyse:

int x = 0;

if (Int32.TryParse(TextBoxD1.Text, out x))
{
    // you know that the parsing attempt
    // was successful
}

Si vous êtes curieux, la différence entre Parse et TryParse est le mieux résumé comme ceci:

La méthode TryParse est comme la parse   méthode, à l'exception de la méthode TryParse   ne jette pas une exception si le   la conversion échoue. Il élimine le   besoin d'utiliser la gestion des exceptions pour tester   pour une exception FormatException dans l'événement   s est invalide et ne peut pas être   analysé avec succès. - MSDN


731
2018-06-19 20:04



Convert.ToInt32( TextBoxD1.Text );

Utilisez cette option si vous êtes sûr que le contenu de la zone de texte est un int valide. Une option plus sûre est

int val = 0;
Int32.TryParse( TextBoxD1.Text, out val );

Cela vous fournira une valeur par défaut que vous pouvez utiliser. Int32.TryParse renvoie également une valeur booléenne indiquant si elle était capable d'analyser ou non, vous pouvez même l'utiliser comme condition d'un if déclaration.

if( Int32.TryParse( TextBoxD1.Text, out val ){
  DoSomething(..);
} else {
  HandleBadInput(..);
}

38
2018-06-19 20:04



int.TryParse()

Il ne sera pas lancé si le texte n'est pas numérique.


27
2018-06-19 20:05



int myInt = int.Parse(TextBoxD1.Text)

Une autre façon serait:

bool isConvertible = false;
int myInt = 0;

isConvertible = int.TryParse(TextBoxD1.Text, out myInt);

La différence entre les deux est que le premier lancerait une exception si la valeur de votre zone de texte ne peut pas être convertie, alors que la seconde retournerait false.


17
2018-06-19 20:08



Vous devez analyser la chaîne, et vous devez également vous assurer qu'elle est vraiment au format d'un entier.

La manière la plus simple est la suivante:

int parsedInt = 0;
if (int.TryParse(TextBoxD1.Text, out parsedInt))
{
   // Code for if the string was valid
}
else
{
   // Code for if the string was invalid
}

15
2018-06-19 20:06



int x = 0;
int.TryParse(TextBoxD1.Text, out x);

L'instruction TryParse renvoie un booléen représentant si l'analyse est réussie ou non. Si elle réussit, la valeur analysée est stockée dans le deuxième paramètre.

Voir Méthode Int32.TryParse (String, Int32) pour des informations plus détaillées.


10
2018-06-19 20:11



Profitez-en...

int i = 0;
string s = "123";
i =int.Parse(s);
i = Convert.ToInt32(s);

8
2018-04-11 07:25



Comme expliqué dans le Documentation TryParse, TryParse () renvoie un booléen indiquant qu'un numéro valide a été trouvé:

bool success = Int32.TryParse(TextBoxD1.Text, out val);

if (success)
{
// put val in database
}
else
{
// handle the case that the string doesn't contain a valid number
}

6
2018-06-19 20:10



Alors qu'il existe déjà de nombreuses solutions qui décrivent int.Parse, il manque quelque chose d'important dans toutes les réponses. En règle générale, les représentations sous forme de chaîne de valeurs numériques diffèrent selon la culture. Les éléments de chaînes numériques tels que les symboles monétaires, les séparateurs de groupes (ou milliers) et les séparateurs décimaux varient selon la culture.

Si vous voulez créer une méthode robuste pour analyser une chaîne en entier, il est donc important de prendre en compte les informations de culture. Si vous ne le faites pas, le paramètres de culture actuels sera utilisé. Cela pourrait donner une mauvaise surprise à l'utilisateur - ou pire, si vous êtes en train d'analyser les formats de fichiers. Si vous souhaitez simplement analyser l'anglais, il est préférable de le rendre explicite en spécifiant les paramètres de culture à utiliser:

var culture = CultureInfo.GetCulture("en-US");
int result = 0;
if (int.TryParse(myString, NumberStyles.Integer, culture, out result))
{
    // use result...
}

Pour plus d'informations, consultez CultureInfo, en particulier NumberFormatInfo sur MSDN.


6
2017-07-06 11:33



Vous pouvez écrire votre propre méthode d'extesion

public static class IntegerExtensions
{
    public static int ParseInt(this string value, int defaultValue = 0)
    {
        int parsedValue;
        if (int.TryParse(value, out parsedValue))
        {
            return parsedValue;
        }

        return defaultValue;
    }

    public static int? ParseNullableInt(this string value)
    {
        if (string.IsNullOrEmpty(value))
        {
            return null;
        }

        return value.ParseInt();
    }
}

Et où que ce soit dans le code, appelez simplement

int myNumber = someString.ParseInt(); // returns value or 0
int age = someString.ParseInt(18); // with default value 18
int? userId = someString.ParseNullableInt(); // returns value or null

Dans ce cas concret

int yourValue = TextBoxD1.Text.ParseInt();

5
2018-02-05 13:05