Frage

Ich habe einen TextBoxD1.Text und ich möchte es zu einem int konvertieren sie in einer Datenbank zu speichern.

Wie kann ich das tun?

War es hilfreich?

Lösung

Versuchen Sie folgendes:

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

oder besser noch:

int x = 0;

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

Da auch Int32.TryParse eine bool kehrt können Sie seine Rückkehr verwenden Wertentscheidungen über die Ergebnisse des Parsing-Versuch zu machen:

int x = 0;

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

Wenn Sie neugierig sind, ist der Unterschied zwischen Parse und TryParse wird am besten wie folgt zusammengefasst:

  

Die TryParse Methode ist wie der Parse   Verfahren, mit Ausnahme des Verfahrens TryParse   nicht eine Ausnahme aus, wenn die   Konvertierung fehlschlägt. Es entfällt die   müssen Ausnahmebehandlung verwenden, um zu testen   für eine Format im Fall   dass s ist ungültig und kann nicht sein,   erfolgreich analysiert. - MSDN

Andere Tipps

Convert.ToInt32( TextBoxD1.Text );

Verwenden Sie diese Option, wenn Sie sich sicher fühlen, dass der Inhalt des Textfeldes eine gültige int ist. Eine sicherere Option ist

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

Dies wird Ihnen mit einigen Standardwert bieten Sie verwenden können. Int32.TryParse gibt auch einen Booleschen Wert, der angibt, ob es in der Lage war, zu analysieren oder nicht, so können Sie es sogar als Bedingung einer if Anweisung verwenden.

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

Es wird nicht ausgelöst, wenn der Text nicht numerisch ist.

int myInt = int.Parse(TextBoxD1.Text)

Eine andere Möglichkeit wäre:

bool isConvertible = false;
int myInt = 0;

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

Der Unterschied zwischen den beiden ist, dass die erste eine Ausnahme, wenn der Wert in der Textbox werfen würde, kann nicht konvertiert werden, während die zweite nur falsch zurückkehren würde.

Sie müssen die Zeichenfolge analysieren, und Sie müssen auch sicherstellen, dass es wirklich im Format einer ganzen Zahl ist.

Der einfachste Weg ist dies:

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

Die TryParse Anweisung gibt einen boolean darstellt, ob das Parsen erfolgreich war oder nicht. Wenn es erfolgreich war, wird der analysierte Wert in den zweiten Parameter gespeichert.

Siehe Int32.TryParse-Methode (String, Int32) für weitere Informationen.

Genießen Sie es ...

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

Zwar gibt es bereits viele Lösungen hier die int.Parse beschreiben, gibt es etwas Wichtiges fehlt in allen Antworten. Typischerweise unterscheiden sich die Stringdarstellungen numerischer Werte von Kultur. Elemente von numerischen Strings wie Währungssymbole, Gruppe (oder Tausende) Separatoren und Dezimaltrennzeichen alle ändern sich je nach Kultur.

Wenn Sie eine robuste Art und Weise erstellen möchten einen String in eine ganze Zahl zu analysieren, ist es daher wichtig, die Kulturinformationen zu berücksichtigen. Wenn Sie dies nicht tun, die aktuelle Kultureinstellungen verwendet werden. Das könnte ein Benutzer eine ziemlich böse Überraschung - oder noch schlimmer, wenn Sie Dateiformate sind Parsen. Wenn Sie nur Englisch Parsing wollen, ist es am besten, einfach es explizit machen, indem Sie die Kultureinstellungen Angabe zu verwenden:

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

Weitere Informationen finden Sie auf Culture up, speziell Number auf MSDN.

Seien Sie vorsichtig, wenn Convert.ToInt32 () auf einem char mit!
Es wird wieder das UTF-16 -Code des Zeichens!

Wenn Sie die Zeichenfolge Zugriff nur in einer bestimmten Position des [i] Indizierungsoperator es wird ein char zurückkehren und keinen string!

String input = "123678";

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

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

Sie können Ihre eigene extesion Methode

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

Und wo im Code rufen Sie einfach

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

In diesem konkreten Fall

int yourValue = TextBoxD1.Text.ParseInt();

Wie in der TryParse Dokumentation , TryParse () liefert eine boolean, die, dass eine gültige Zahl gibt wurde gefunden:

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
}

Sie können entweder,

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

oder

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

Die Umwandlung von string zu int kann getan werden: int, Int32, Int64 und andere Datentypen reflektieren Integer-Datentypen in .NET

Im Folgenden Beispiel zeigt diese Umwandlung:

Diese Show (für info) Datenadapterelement initialisiert Wert auf int. Das gleiche kann direkt wie getan wird

int xxiiqVal = Int32.Parse(strNabcd);

Bsp.

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

Link zu dieser Demo zu sehen.

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

Dies würde tun

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

Sie können auch verwenden

int xi=Int32.Parse(x);

Siehe Microsoft Developer Network für weitere Informationen

Sie können eine Zeichenfolge konvertieren in C # int mit:

Funktionen von convert Klasse heißt Convert.ToInt16(), Convert.ToInt32(), Convert.ToInt64() oder durch Parse und TryParse Funktionen. Beispiele sind angegeben, hier .

Sie können auch eine Erweiterungsmethode verwenden, so ist es besser lesbar sein wird (obwohl jeder ist bereits zu den regulären Parse Funktionen verwendet wird).

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

Und dann kann man es nennen, dass Art und Weise:

  1. Wenn Sie sicher sind, dass die Zeichenfolge eine ganze Zahl, wie "50".

    int num = TextBoxD1.Text.ParseToInt32();
    
  2. Wenn Sie nicht sicher sind, und wollen Abstürze verhindern.

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

Um es dynamischer zu gestalten, so dass Sie es auch analysieren können zu verdoppeln, float, etc. Sie eine generische Erweiterung machen können.

Sie können ohne TryParse oder eingebaute Funktionen wie unten tun

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

die Art, wie ich dies immer tun, ist wie folgt

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

Dies ist, wie ich es tun würde, ich hoffe, das hilft. (:

Sie können String in einen Integer-Wert mit Hilfe von Parse-Methode konvertieren.

Beispiel:

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

Sie dies versuchen können, es wird funktionieren:

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

Der String-Wert in der Variablen TextBoxD1.Text wird in Int32 umgewandelt werden und wird in x gespeichert werden.

Wenn Sie sich für den langen Weg suchen, einfach erstellen Sie Ihre eine Methode:

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

Dieser Code funktioniert für mich in Visual Studio 2010:

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

Dies kann Ihnen helfen; 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.");
        }
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top