Ich habe eine TextBoxD1.Text
und möchte sie in eine konvertieren int
, um sie in einer Datenbank zu speichern.
Wie kann ich das machen?
Versuche dies:
int x = Int32.Parse(TextBoxD1.Text);
oder noch besser:
int x = 0;
Int32.TryParse(TextBoxD1.Text, out x);
Da Int32.TryParse
a zurückgegeben wird bool
, können Sie den Rückgabewert verwenden, um Entscheidungen über die Ergebnisse des Analyseversuchs zu treffen:
int x = 0;
if (Int32.TryParse(TextBoxD1.Text, out x))
{
// you know that the parsing attempt
// was successful
}
Wenn Sie neugierig sind, lässt sich der Unterschied zwischen Parse
und TryParse
am besten folgendermaßen zusammenfassen:
Die TryParse-Methode ähnelt der Parse-Methode, außer dass die TryParse-Methode keine Ausnahme auslöst, wenn die Konvertierung fehlschlägt. Es entfällt die Notwendigkeit, die Ausnahmebehandlung zum Testen auf eine FormatException zu verwenden, falls s ungültig ist und nicht erfolgreich analysiert werden kann. - MSDN
Int64.Parse()
. Wenn die Eingabe nicht int ist, erhalten Sie eine Ausführung und einen Stack-Trace mitInt64.Parse
oder den BooleschenFalse
mitInt64.TryParse()
, sodass Sie eine if-Anweisung wie benötigenif (Int32.TryParse(TextBoxD1.Text, out x)) {}
.Verwenden Sie diese Option, wenn Sie sicher sind, dass der Inhalt des Textfelds gültig ist
int
. Eine sicherere Option istDadurch erhalten Sie einen Standardwert, den Sie verwenden können.
Int32.TryParse
Gibt auch einen booleschen Wert zurück, der angibt, ob er analysiert werden konnte oder nicht, sodass Sie ihn sogar als Bedingung für eineif
Anweisung verwenden können.quelle
Es wird nicht geworfen, wenn der Text nicht numerisch ist.
quelle
Ein anderer Weg wäre:
Der Unterschied zwischen den beiden besteht darin, dass der erste eine Ausnahme auslösen würde, wenn der Wert in Ihrem Textfeld nicht konvertiert werden kann, während der zweite nur false zurückgeben würde.
quelle
code
int NumericJL; bool isNum = int.TryParse (nomeeJobBand, out NumericJL); if (isNum) // Der zurückbehaltene JL kann auf int übertragen werden und dann zum Vergleich vorgehen {if (! (NumericJL> = 6)) {// Nominate} // else {}}Sie müssen die Zeichenfolge analysieren und sicherstellen, dass sie wirklich das Format einer Ganzzahl hat.
Der einfachste Weg ist folgender:
quelle
Seien Sie vorsichtig, wenn Sie Convert.ToInt32 () für ein Zeichen verwenden!
Es wird der UTF-16- Code des Zeichens zurückgegeben!
Wenn Sie mit dem
[i]
Indexierungsoperator nur an einer bestimmten Position auf die Zeichenfolge zugreifen , wird achar
und nicht astring
!quelle
Die TryParse-Anweisung gibt einen Booleschen Wert zurück, der angibt, ob die Analyse erfolgreich war oder nicht. Wenn dies erfolgreich war, wird der analysierte Wert im zweiten Parameter gespeichert.
Weitere Informationen finden Sie unter Int32.TryParse-Methode (String, Int32) .
quelle
Geniesse es...
quelle
Zwar gibt es hier bereits viele Lösungen, die beschreiben
int.Parse
, fehlt in allen Antworten etwas Wichtiges. Typischerweise unterscheiden sich die Zeichenfolgendarstellungen von numerischen Werten je nach Kultur. Elemente numerischer Zeichenfolgen wie Währungssymbole, Gruppen- (oder Tausender-) Trennzeichen und Dezimaltrennzeichen variieren je nach Kultur.Wenn Sie eine robuste Methode zum Parsen einer Zeichenfolge in eine Ganzzahl erstellen möchten, ist es daher wichtig, die Kulturinformationen zu berücksichtigen. Wenn Sie dies nicht tun, werden die aktuellen Kultureinstellungen verwendet. Das könnte einen Benutzer ziemlich böse überraschen - oder noch schlimmer, wenn Sie Dateiformate analysieren. Wenn Sie nur Englisch analysieren möchten, machen Sie es am besten einfach explizit, indem Sie die zu verwendenden Kultureinstellungen angeben:
Weitere Informationen finden Sie in CultureInfo, insbesondere in NumberFormatInfo auf MSDN.
quelle
Sie können Ihre eigene Erweiterungsmethode schreiben
Und wo immer im Code einfach anrufen
In diesem konkreten Fall
quelle
StringExtensions
werdenIntegerExtensions
, da diese Erweiterungsmethoden auf astring
und nicht auf a wirkenint
?Wie in der TryParse-Dokumentation erläutert , gibt TryParse () einen Booleschen Wert zurück, der angibt, dass eine gültige Nummer gefunden wurde:
quelle
quelle
Sie können entweder verwenden,
oder
quelle
quelle
Sie können eine Zeichenfolge in C # in int konvertieren, indem Sie:
Funktionen der convert - Klasse , dh
Convert.ToInt16()
,Convert.ToInt32()
,Convert.ToInt64()
oder durch die VerwendungParse
undTryParse
Funktionen. Beispiele finden Sie hier .quelle
Sie können auch eine Erweiterungsmethode verwenden , damit diese besser lesbar ist (obwohl alle bereits an die regulären Analysefunktionen gewöhnt sind).
Und dann können Sie es so nennen:
Wenn Sie sicher sind, dass Ihre Zeichenfolge eine Ganzzahl ist, wie "50".
Wenn Sie sich nicht sicher sind und Abstürze verhindern möchten.
Um es dynamischer zu gestalten, sodass Sie es auch auf Double, Float usw. analysieren können, können Sie eine generische Erweiterung erstellen.
quelle
Die Umwandlung von
string
zuint
können erfolgen:int
,Int32
,Int64
und anderen Datentypen reflektieren Integer - Datentypen in .NETDas folgende Beispiel zeigt diese Konvertierung:
Dieses Datenadapterelement show (zur Information) wurde auf den Wert int initialisiert. Das gleiche kann direkt gemacht werden wie
Ex.
Link, um diese Demo zu sehen .
quelle
Das würde reichen
Oder Sie können verwenden
Weitere Informationen finden Sie im Microsoft Developer Network
quelle
Sie können wie folgt ohne TryParse oder eingebaute Funktionen vorgehen:
quelle
quelle
Sie können Zeichenfolgen mithilfe der Analysemethode in einen ganzzahligen Wert konvertieren.
Z.B:
quelle
So mache ich das immer:
So würde ich es machen.
quelle
Wenn Sie auf der Suche nach einem langen Weg sind, erstellen Sie einfach Ihre einzige Methode:
quelle
METHODE 1
Methode 2
Methode 3
quelle
Dieser Code funktioniert für mich in Visual Studio 2010:
quelle
Das funktioniert bei mir:
quelle
Sie können Folgendes versuchen. Es wird klappen:
Der Zeichenfolgenwert in der Variablen TextBoxD1.Text wird in Int32 konvertiert und in x gespeichert.
quelle
In C # v.7 können Sie einen Inline-Out-Parameter ohne zusätzliche Variablendeklaration verwenden:
quelle
out
Parameter in C # jetzt nicht entmutigt?Dies kann Ihnen helfen; D.
quelle