如何将string转换为Int?

我有

TextBoxD1.Text 

我想把它转换成'int'来存储在数据库中。 我该怎么做?

尝试这个:

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

或更好:

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

此外,因为Int32.TryParse返回一个bool ,所以你可以使用它的返回值来决定parsing尝试的结果:

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

如果你好奇, ParseTryParse之间的区别最好总结如下:

TryParse方法与Parse方法类似,但TryParse方法在转换失败时不会引发exception。 它无需使用exception处理来在s无效且无法成功parsing的情况下testingFormatException。 – MSDN

 Convert.ToInt32( TextBoxD1.Text ); 

如果您确信文本框的内容是有效的int,请使用此方法。 一个更安全的select是

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

这将为您提供一些您可以使用的默认值。 Int32.TryParse也返回一个布尔值,表示它是否能够parsing,所以你甚至可以用它作为if语句的条件。

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

如果文本不是数字,它不会抛出。

您需要parsingstring,并且还需要确保它是真正的整数格式。

最简单的方法是:

 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 myInt = int.Parse(TextBoxD1.Text) 

另一种方法是:

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

两者之间的区别在于,如果文本框中的值不能被转换,则第一个将抛出exception,而第二个将仅返回false。

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

TryParse语句返回表示parsing是否成功的布尔值。 如果成功,parsing的值将被存储到第二个参数中。

有关更多详细信息请参阅Int32.TryParse方法(string,Int32)

好好享受…

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

如TryParse文档中所述,TryParse()返回一个布尔值,表示find了一个有效的数字:

 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 } 

虽然在这里已经有很多描述int.Parse解决scheme,但是在所有的答案中都缺less一些重要的东西。 通常,数值的string表示方式因文化而异。 数字string的元素(如货币符号,组(或千位)分隔符和小数点分隔符)因文化而异。

如果你想创build一个强大的方法来parsing一个string为整数,因此重要的是要考虑到文化信息。 如果您不这样做,则会使用当前的文化设置 。 这可能会给用户一个非常讨厌的惊喜 – 或者更糟的是,如果你正在parsing文件格式。 如果你只是想英文parsing,最好是明确指出要使用的文化设置:

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

有关更多信息,请阅读CultureInfo,特别是MSDN上的NumberFormatInfo 。

你可以写你自己的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(); } } 

无论在代码中调用

 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 

在这个具体的情况下

 int yourValue = TextBoxD1.Text.ParseInt(); 

你可以使用,

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

要么

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

你也可以使用扩展方法 ,所以它会更具可读性(尽pipe每个人都已经习惯了常规的分析函数)。

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

然后你可以这样调用它:

  1. 如果你确定你的string是一个整数,比如“50”。

     int num = TextBoxD1.Text.ParseToInt32(); 
  2. 如果你不确定,想要防止崩溃。

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

为了使它更具dynamic性,所以你可以parsing它也可以加倍,浮点等等,你可以做一个通用的扩展。

string转换为int可以用于: intInt32Int64和反映.NET中整型数据types的其他数据types

以下示例显示了此转换:

这个显示(对于info)的数据适配器元素初始化为int值。 同样可以直接完成,

 int xxiiqVal = Int32.Parse(strNabcd); 

防爆。

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

链接看到这个演示 。

 //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; } 
 int i = Convert.ToInt32(TextBoxD1.Text); 

我一直这样做的方式就是这样

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

这是我如何做到这一点,我希望这有助于。 (:

在char上使用Convert.ToInt32()时要小心! 它将返回ASCII码! 如果您可能需要只提取string中的某个位置。

 String input = "123678"; int x = Convert.ToInt32(input[4]); // returns 55 int x = Convert.ToInt32(input[4].toString()); // returns 7 
 int x = Int32.TryParse(TextBoxD1.Text, out x)?x:0; 

你可以试试这个,它会工作:

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

variablesTextBoxD1.Text中的string值将被转换为Int32并存储在x中。

如果您正在寻找很长的路,只需创build一个方法:

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

这会做

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

或者你可以使用

 int xi=Int32.Parse(x); 

请参阅Microsoft Developer Network以获取更多信息

你可以像下面那样做,而不需要TryParse或内置函数

 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 - 1)); } } return x ; } 

方法1

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

方法2

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

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

这可能会帮助你; 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."); } } }