如何将String转换为Int?

我有一个TextBoxD1.Text,我想将其转换为int以将其存储在数据库中。

我怎么能这么做?

1851763 次浏览
Convert.ToInt32( TextBoxD1.Text );

如果您确信输入框的内容是有效的int,请使用此选项。更安全的选择是

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

这将为您提供一些可以使用的默认值。Int32.TryParse还返回一个布尔值,指示它是否能够解析,因此您甚至可以将其用作if语句的条件。

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

试试这个:

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

或者更好:

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

此外,由于Int32.TryParse返回bool,您可以使用其返回值来决定解析尝试的结果:

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

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

TryParse方法类似于Parse方法,除了TryParse方法如果转换失败。它消除了需要使用异常处理来测试对于事件中的格式异常那s是无效的,不能是解析成功。-MSDN

int.TryParse()

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

您需要解析字符串,还需要确保它确实是整数格式。

最简单的方法是:

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

两者之间的区别在于,如果文本框中的值无法转换,第一个会抛出异常,而第二个只会返回false。

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

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

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

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

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

您也可以使用延拓法,因此它将更具可读性(尽管每个人都已经习惯了常规的Parse函数)。

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. 如果您确定字符串是整数,例如“50”。

    int num = TextBoxD1.Text.ParseToInt32();
  2. If you are not sure and want to prevent crashes.

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

To make it more dynamic, so you can parse it also to double, float, etc., you can make a generic extension.

好好享受…

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

您可以尝试以下操作。它会起作用:

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

变量TextBoxD1中的字符串值。文本将被转换为Int32并存储在x中。

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

如果您想创建一种将字符串解析为整数的健壮方法,因此考虑区域性信息非常重要。如果您不这样做,将使用当前文化设置。这可能会给用户一个相当令人讨厌的惊喜——或者更糟,如果您正在解析文件格式。如果您只想进行英语解析,最好通过指定要使用的区域性设置来明确它:

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

有关更多信息,请阅读CulureInfo,特别是MSDN上的数值格式信息

你也可以用,

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

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

在char上使用Convert.ToInt32()时要小心!它将返回字符的UTF-16代码!

如果您使用[i]索引运算符仅在特定位置访问字符串,它将返回char而不是string

String input = "123678";^|int indexOfSeven =  4;
int x = Convert.ToInt32(input[indexOfSeven]);             // Returns 55
int x = Convert.ToInt32(input[indexOfSeven].toString());  // Returns 7

您可以编写自己的扩展方法

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 0int age = someString.ParseInt(18); // With default value 18int? userId = someString.ParseNullableInt(); // Returns value or null

在这个具体案例中

int yourValue = TextBoxD1.Text.ParseInt();

我总是这样做的方式是这样的:

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

这就是我要做的。

stringint的转换可以用于:intInt32Int64和其他反映. NET中整数数据类型的数据类型

下面的例子显示了这种转换:

这显示(用于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// ExampleintValue = 2000;}
int x = Int32.TryParse(TextBoxD1.Text, out x) ? x : 0;

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

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

您可以在C#中使用以下命令将字符串转换为int:

转换类的函数,即Convert.ToInt16()Convert.ToInt32()Convert.ToInt64()或使用ParseTryParse函数。给出了示例这里

您可以在parse方法的帮助下将字符串转换为整数值。

例如:

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

在C#v.7中,您可以使用内联输出参数,而无需额外的变量声明:

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

上述所有答案都很好,但对于信息,我们可以使用int.TryParse安全地将字符串转换为int,例如

// TryParse returns true if the conversion succeeded// and stores the result in j.int j;if (Int32.TryParse("-105", out j))Console.WriteLine(j);elseConsole.WriteLine("String could not be parsed.");// Output: -105

TryParse从不抛出异常-即使是无效输入和null。在大多数程序上下文中,它总体上优于int.Parse

来源:如何在C#中将字符串转换为int?(Int. Parse和Int. TryParse之间的区别)

您可以在C#中将string转换为int许多不同的类型方法

第一个主要是使用:

string test = "123";int x = Convert.ToInt16(test);

如果int值较高,则应使用int32类型。

第二张:

int x = int.Parse(text);

如果要进行错误检查,可以使用TryParse方法。在下面我添加了可空类型;

int i=0;Int32.TryParse(text, out i) ? i : (int?)null);

享受你的代码……

虽然我同意使用TryParse方法,但很多人不喜欢使用out参数(包括我自己)。在C#中添加了元组支持后,另一种选择是创建一个扩展方法,将out的使用次数限制为单个实例:

public static class StringExtensions{public static (int result, bool canParse) TryParse(this string s){int res;var valid = int.TryParse(s, out res);return (result: res, canParse: valid);}}

(来源:C#如何将字符串转换为int

如果您知道字符串是整数,请执行:

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

如果您不知道字符串是整数,请安全地使用TryParse

C# 7.0中,您可以使用内联变量声明

  • 如果解析成功-value=其解析值。
  • 如果解析失败-value=0。

代码:

if (int.TryParse(TextBoxD1.Text, out int value)){// Parse succeed}

缺点:

您无法区分0值和非解析值。

这是通过扩展方法执行此操作的版本,如果转换失败,该方法还可以选择设置默认值。事实上,这就是我用来将字符串输入转换为任何可转换类型的方法:

using System;using System.ComponentModel;
public static class StringExtensions{public static TOutput AsOrDefault<TOutput>(this string input, TOutput defaultValue = default)where TOutput : IConvertible{TOutput output = defaultValue;
try{var converter = TypeDescriptor.GetConverter(typeof(TOutput));if (converter != null){output = (TOutput)converter.ConvertFromString(input);}}catch { }
return output;}}

对于我的使用,我将输出限制为可转换类型之一:https://learn.microsoft.com/en-us/dotnet/api/system.iconvertible?view=net-5.0。例如,我不需要疯狂的逻辑来将字符串转换为类。

要使用它将字符串转换为int:

using FluentAssertions;using Xunit;
[Theory][InlineData("0", 0)][InlineData("1", 1)][InlineData("123", 123)][InlineData("-123", -123)]public void ValidStringWithNoDefaultValue_ReturnsExpectedResult(string input, int expectedResult){var result = input.AsOrDefault<int>();
result.Should().Be(expectedResult);}
[Theory][InlineData("0", 999, 0)][InlineData("1", 999, 1)][InlineData("123", 999, 123)][InlineData("-123", -999, -123)]public void ValidStringWithDefaultValue_ReturnsExpectedResult(string input, int defaultValue, int expectedResult){var result = input.AsOrDefault(defaultValue);
result.Should().Be(expectedResult);}
[Theory][InlineData("")][InlineData(" ")][InlineData("abc")]public void InvalidStringWithNoDefaultValue_ReturnsIntegerDefault(string input){var result = input.AsOrDefault<int>();
result.Should().Be(default(int));}
[Theory][InlineData("", 0)][InlineData(" ", 1)][InlineData("abc", 234)]public void InvalidStringWithDefaultValue_ReturnsDefaultValue(string input, int defaultValue){var result = input.AsOrDefault(defaultValue);
result.Should().Be(defaultValue);}