Antworten:
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 mit Int64.Parse
oder den Booleschen False
mit Int64.TryParse()
, sodass Sie eine if-Anweisung wie benötigen if (Int32.TryParse(TextBoxD1.Text, out x)) {}
.
Convert.ToInt32( TextBoxD1.Text );
Verwenden Sie diese Option, wenn Sie sicher sind, dass der Inhalt des Textfelds gültig ist int
. Eine sicherere Option ist
int val = 0;
Int32.TryParse( TextBoxD1.Text, out val );
Dadurch 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 eine if
Anweisung verwenden können.
if( Int32.TryParse( TextBoxD1.Text, out val ){
DoSomething(..);
} else {
HandleBadInput(..);
}
int.TryParse()
Es wird nicht geworfen, wenn der Text nicht numerisch ist.
int myInt = int.Parse(TextBoxD1.Text)
Ein anderer Weg wäre:
bool isConvertible = false;
int myInt = 0;
isConvertible = int.TryParse(TextBoxD1.Text, out myInt);
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.
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:
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
}
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 a char
und nicht a string
!
String input = "123678";
^
|
int indexOfSeven = 4;
int x = Convert.ToInt32(input[indexOfSeven]); // Returns 55
int x = Convert.ToInt32(input[indexOfSeven].toString()); // Returns 7
int x = 0;
int.TryParse(TextBoxD1.Text, out x);
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) .
Geniesse es...
int i = 0;
string s = "123";
i =int.Parse(s);
i = Convert.ToInt32(s);
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:
var culture = CultureInfo.GetCulture("en-US");
int result = 0;
if (int.TryParse(myString, NumberStyles.Integer, culture, out result))
{
// use result...
}
Weitere Informationen finden Sie in CultureInfo, insbesondere in NumberFormatInfo auf MSDN.
Sie können Ihre eigene Erweiterungsmethode 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 immer im Code einfach anrufen
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();
StringExtensions
werden IntegerExtensions
, da diese Erweiterungsmethoden auf a string
und nicht auf a wirken int
?
Wie in der TryParse-Dokumentation erläutert , gibt TryParse () einen Booleschen Wert zurück, der angibt, dass eine gültige Nummer gefunden wurde:
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 verwenden,
int i = Convert.ToInt32(TextBoxD1.Text);
oder
int i = int.Parse(TextBoxD1.Text);
//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;
}
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 Verwendung Parse
und TryParse
Funktionen. Beispiele finden Sie hier .
Sie können auch eine Erweiterungsmethode verwenden , damit diese besser lesbar ist (obwohl alle bereits an die regulären Analysefunktionen gewöhnt sind).
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 können Sie es so nennen:
Wenn Sie sicher sind, dass Ihre Zeichenfolge eine Ganzzahl ist, wie "50".
int num = TextBoxD1.Text.ParseToInt32();
Wenn Sie sich nicht sicher sind und Abstürze verhindern möchten.
int num;
if (TextBoxD1.Text.TryParseToInt32(out num))
{
//The parse was successful, the num has the parsed value.
}
Um es dynamischer zu gestalten, sodass Sie es auch auf Double, Float usw. analysieren können, können Sie eine generische Erweiterung erstellen.
Die Umwandlung von string
zu int
können erfolgen: int
, Int32
, Int64
und anderen Datentypen reflektieren Integer - Datentypen in .NET
Das folgende Beispiel zeigt diese Konvertierung:
Dieses Datenadapterelement show (zur Information) wurde auf den Wert int initialisiert. Das gleiche kann direkt gemacht werden wie
int xxiiqVal = Int32.Parse(strNabcd);
Ex.
string strNii = "";
UsrDataAdapter.SelectCommand.Parameters["@Nii"].Value = Int32.Parse(strNii );
Das würde reichen
string x = TextBoxD1.Text;
int xi = Convert.ToInt32(x);
Oder Sie können verwenden
int xi = Int32.Parse(x);
Weitere Informationen finden Sie im Microsoft Developer Network
Sie können wie folgt ohne TryParse oder eingebaute Funktionen vorgehen:
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);
Sie können Zeichenfolgen mithilfe der Analysemethode in einen ganzzahligen Wert konvertieren.
Z.B:
int val = Int32.parse(stringToBeParsed);
int x = Int32.parse(1234);
So mache ich das immer:
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' statement says if the string is not a number, display an error, else now you will have an integer.
}
}
}
So würde ich es machen.
Wenn Sie auf der Suche nach einem langen Weg sind, erstellen Sie einfach Ihre einzige 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);
Das funktioniert bei mir:
using System;
namespace numberConvert
{
class Program
{
static void Main(string[] args)
{
string numberAsString = "8";
int numberAsInt = int.Parse(numberAsString);
}
}
}
Sie können Folgendes versuchen. Es wird klappen:
int x = Convert.ToInt32(TextBoxD1.Text);
Der Zeichenfolgenwert in der Variablen TextBoxD1.Text wird in Int32 konvertiert und in x gespeichert.
In C # v.7 können Sie einen Inline-Out-Parameter ohne zusätzliche Variablendeklaration verwenden:
int.TryParse(TextBoxD1.Text, out int x);
out
Parameter in C # jetzt nicht entmutigt?
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.");
}
}
}