Question

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

Comment puis-je faire cela?

Était-ce utile?

La solution

Essayez ceci:

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

ou mieux encore:

int x = 0;

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

En outre, depuis Int32.TryParse renvoie 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 Analyse et TryParse se résume de la manière suivante:

  

La méthode TryParse est semblable à l'analyse   méthode, sauf 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   que s est invalide et ne peut pas être   analysé avec succès. - MSDN

Autres conseils

Convert.ToInt32( TextBoxD1.Text );

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

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

Ceci vous donnera une valeur par défaut que vous pourrez utiliser. Int32.TryParse renvoie également une valeur booléenne indiquant si l'analyse a pu ou non être analysée. Vous pouvez donc même l'utiliser comme condition d'une instruction if .

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

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

int myInt = int.Parse(TextBoxD1.Text)

Une autre solution serait:

bool isConvertible = false;
int myInt = 0;

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

La différence entre les deux réside dans le fait que le premier lèverait une exception si la valeur de votre zone de texte ne pouvait pas être convertie, alors que le second ne renverrait que faux.

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

Le moyen le plus simple est le suivant:

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
}
int x = 0;
int.TryParse(TextBoxD1.Text, out x);

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

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

Profitez-en ...

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

Bien qu'il existe déjà de nombreuses solutions décrivant 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 groupe (ou des milliers) et les séparateurs décimaux varient en fonction de la culture.

Si vous souhaitez créer un moyen robuste d’analyser une chaîne en un entier, il est donc important de prendre en compte les informations relatives à la culture. Sinon, les paramètres de culture actuels seront utilisés. Cela pourrait donner à un utilisateur une mauvaise surprise, voire pire, si vous analysez des formats de fichiers. Si vous souhaitez simplement analyser l'anglais, il est préférable de l'expliciter simplement 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.

Faites attention lorsque vous utilisez Convert.ToInt32 () sur un caractère!
Il renverra le code UTF-16 du personnage!

Si vous n'accédez à la chaîne que dans une certaine position à l'aide de l'opérateur d'indexation [i] , il renverra un char et non une chaîne . !

String input = "123678";

int x = Convert.ToInt32(input[4]);  // returns 55

int x = Convert.ToInt32(input[4].toString());  // returns 7

Vous pouvez écrire votre propre méthode d'extension Et n'importe où dans le code, appelez simplement

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

Dans ce cas concret

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

Comme expliqué dans la documentation TryParse , TryParse () renvoie un booléen indiquant qu'un nombre 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
}

Vous pouvez utiliser soit,

int i = Convert.ToInt32(TextBoxD1.Text);

ou

int i =int.Parse(TextBoxD1.Text);

La conversion de chaîne en int peut être effectuée pour: int , Int32 , Int64 et d'autres types de données reflétant des types de données entiers dans .NET

L'exemple ci-dessous montre cette conversion:

Cet élément d'adaptateur de données show (pour info) initialisé à la valeur int. La même chose peut être faite directement comme,

int xxiiqVal = Int32.Parse(strNabcd);

Ex.

string strNii = "";
UsrDataAdapter.SelectCommand.Parameters["@Nii"].Value = Int32.Parse(strNii );

Lien pour voir cette démo .

int x = Int32.TryParse(TextBoxD1.Text, out x)?x:0;
//May be quite some time ago but I just want throw in some line for any one who may still need it

int intValue;
string strValue = "2021";

try
{
    intValue = Convert.ToInt32(strValue);
}
catch
{
    //Default Value if conversion fails OR return specified error
    // Example 
    intValue = 2000;
}

Cela ferait

string x=TextBoxD1.Text;
int xi=Convert.ToInt32(x);

Ou vous pouvez utiliser

int xi=Int32.Parse(x);

Reportez-vous à Réseau de développeurs Microsoft pour plus d'informations

Vous pouvez convertir une chaîne en int en C # en utilisant:

Fonctions de la classe de conversion, à savoir Convert.ToInt16 () , Convert.ToInt32 () , Convert.ToInt64 () ou en utilisant < code> Fonctions et TryParse . Des exemples sont donnés ici .

Vous pouvez également utiliser une méthode d'extension pour la rendre plus lisible (bien que tout le monde le soit). déjà habitué aux fonctions Parse habituelles).

public static class StringExtensions
{
    /// <summary>
    /// Converts a string to int.
    /// </summary>
    /// <param name="value">The string to convert.</param>
    /// <returns>The converted integer.</returns>
    public static int ParseToInt32(this string value)
    {
        return int.Parse(value);
    }

    /// <summary>
    /// Checks whether the value is integer.
    /// </summary>
    /// <param name="value">The string to check.</param>
    /// <param name="result">The out int parameter.</param>
    /// <returns>true if the value is an integer; otherwise, false.</returns>
    public static bool TryParseToInt32(this string value, out int result)
    {
        return int.TryParse(value, out result);
    }
}

Et vous pouvez l'appeler ainsi:

  1. Si vous êtes certain que votre chaîne est un entier, par exemple "50".

    int num = TextBoxD1.Text.ParseToInt32();
    
  2. Si vous n’êtes pas sûr et que vous souhaitez éviter les plantages.

    int num;
    if (TextBoxD1.Text.TryParseToInt32(out num))
    {
        //The parse was successful, the num has the parsed value.
    }
    

Pour le rendre plus dynamique, afin de pouvoir l'analyser également pour le doubler, le flotter, etc., vous pouvez créer une extension générique.

vous pouvez faire comme ci-dessous sans fonctions TryParse ou intégrées

static int convertToInt(string a)
{
    int x=0;
    for (int i = 0; i < a.Length; i++)
        {
            int temp=a[i] - '0';
            if (temp!=0)
            {
                x += temp * (int)Math.Pow(10, (a.Length - (i+1)));
            }              
        }
    return x ;
}
int i = Convert.ToInt32(TextBoxD1.Text);

la façon dont je fais toujours c'est comme ça

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace example_string_to_int
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string a = textBox1.Text;
            // this turns the text in text box 1 into a string
            int b;
            if (!int.TryParse(a, out b))
            {
                MessageBox.Show("this is not a number");
            }
            else
            {
                textBox2.Text = a+" is a number" ;
            }
            // then this if statment says if the string not a number display an error elce now you will have an intager.
        }
    }
}

voici comment je le ferais, j'espère que cela aide. (:

Vous pouvez convertir une chaîne en valeur entière à l'aide de la méthode parse.

Par exemple:

int val = Int32.parse(stringToBeParsed);
int x = Int32.parse(1234);

Vous pouvez essayer ceci, cela fonctionnera:

int x = Convert.ToInt32(TextBoxD1.Text);

La valeur de chaîne dans la variable TextBoxD1.Text sera convertie en Int32 et sera stockée dans x.

Si vous recherchez le chemin le plus long, créez simplement une méthode:

static int convertToInt(string a)
    {
        int x = 0;

        Char[] charArray = a.ToCharArray();
        int j = charArray.Length;

        for (int i = 0; i < charArray.Length; i++)
        {
            j--;
            int s = (int)Math.Pow(10, j);

            x += ((int)Char.GetNumericValue(charArray[i]) * s);
        }
        return x;
    }

METHODE 1

int  TheAnswer1 = 0;
bool Success = Int32.TryParse("42", out TheAnswer1);
if (!Success) {
    Console.WriteLine("String not Convertable to an Integer");
}

METHODE 2

int TheAnswer2 = 0;
try {
    TheAnswer2 = Int32.Parse("42");
}
catch {
    Console.WriteLine("String not Convertable to an Integer");
}

METHODE 3

int TheAnswer3 = 0;
try {
    TheAnswer3 = Int32.Parse("42");
}
catch (FormatException) {
    Console.WriteLine("String not in the correct format for an Integer");
}
catch (ArgumentNullException) {
    Console.WriteLine("String is null");
}
catch (OverflowException) {
    Console.WriteLine("String represents a number less than"
                      + "MinValue or greater than MaxValue");
}

Ce code fonctionne pour moi dans Visual Studio 2010:

int someValue = Convert.ToInt32(TextBoxD1.Text);

cela peut vous aider; D

{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        float Stukprijs;
        float Aantal;
        private void label2_Click(object sender, EventArgs e)
        {

        }

        private void button2_Click(object sender, EventArgs e)
        {
            MessageBox.Show("In de eersre textbox staat een geldbedrag." + Environment.NewLine + "In de tweede textbox staat een aantal." + Environment.NewLine + "Bereken wat er moetworden betaald." + Environment.NewLine + "Je krijgt 15% korting over het bedrag BOVEN de 100." + Environment.NewLine + "Als de korting meer dan 10 euri is," + Environment.NewLine + "wordt de korting textbox lichtgroen");
        }

        private void button1_Click(object sender, EventArgs e)
        {
            errorProvider1.Clear();
            errorProvider2.Clear();
            if (float.TryParse(textBox1.Text, out Stukprijs))
            {
                if (float.TryParse(textBox2.Text, out Aantal))
                {
                    float Totaal = Stukprijs * Aantal;
                    string Output = Totaal.ToString();
                    textBox3.Text = Output;
                    if (Totaal >= 100)
                    {
                        float korting = Totaal - 100;
                        float korting2 = korting / 100 * 15;
                        string Output2 = korting2.ToString();
                        textBox4.Text = Output2;
                        if (korting2 >= 10)
                        {
                            textBox4.BackColor = Color.LightGreen;
                        }
                        else
                        {
                            textBox4.BackColor = SystemColors.Control;
                        }
                    }
                    else
                    {
                        textBox4.Text = "0";
                        textBox4.BackColor = SystemColors.Control;
                    }
                }
                else
                {
                    errorProvider2.SetError(textBox2, "Aantal plz!");
                }

            }
            else
            {
                errorProvider1.SetError(textBox1, "Bedrag plz!");
                if (float.TryParse(textBox2.Text, out Aantal))
                {

                }
                else
                {
                    errorProvider2.SetError(textBox2, "Aantal plz!");
                }
            }

        }

        private void BTNwissel_Click(object sender, EventArgs e)
        {
            //LL, LU, LR, LD.
            Color c = LL.BackColor;
            LL.BackColor = LU.BackColor;
            LU.BackColor = LR.BackColor;
            LR.BackColor = LD.BackColor;
            LD.BackColor = c;
        }

        private void button3_Click(object sender, EventArgs e)
        {
            MessageBox.Show("zorg dat de kleuren linksom wisselen als je op de knop drukt.");
        }
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top