如何将String转换为Int?

tur*_*009 603 .net c# string int type-conversion

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

我怎样才能做到这一点?

And*_*are 990

试试这个:

int x = Int32.Parse(TextBoxD1.Text);
Run Code Online (Sandbox Code Playgroud)

或者更好的是:

int x = 0;

Int32.TryParse(TextBoxD1.Text, out x);
Run Code Online (Sandbox Code Playgroud)

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

int x = 0;

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

如果你很好奇,那么Parse和之间的区别TryParse总结如下:

TryParse方法与Parse方法类似,只是如果转换失败,TryParse方法不会抛出异常.它消除了在s无效且无法成功解析的情况下使用异常处理来测试FormatException的需要.- MSDN

  • @Jonny`Int64.Parse()`.如果输入非INT,那么你会得到一个execption与`Int64.Parse`,或布尔`FALSE`用`Int64.TryParse()`堆栈跟踪,所以if语句你需要一个像`if(Int32.TryParse(TextBoxD1.Text,out x)){}`. (6认同)
  • 也许对于其他人来说这是非常明显的,但对于noobish人来说,如果转换成功,那么'out x'所做的就是将x的值设置为string-cast-as-integer.即在这种情况下,如果字符串具有任何非整数字符,则x = 0,否则x =字符串作为整数的值.所以整洁的事情是这是一个简短的表达式,它告诉你铸造是否成功,并且将铸造整数同时存储在一个变量中.显然你经常想继续使用'else {//解析的字符串不是整数,因此有些代码可以处理这种情况}' (4认同)
  • 如果整数是64位,或者看起来像"aslkdlksadjsd"怎么办?这还安全吗? (3认同)

Bab*_*fas 51

Convert.ToInt32( TextBoxD1.Text );
Run Code Online (Sandbox Code Playgroud)

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

int val = 0;
Int32.TryParse( TextBoxD1.Text, out val );
Run Code Online (Sandbox Code Playgroud)

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

if( Int32.TryParse( TextBoxD1.Text, out val ){
  DoSomething(..);
} else {
  HandleBadInput(..);
}
Run Code Online (Sandbox Code Playgroud)

  • 10年前,我道歉。 (3认同)

n8w*_*wrl 35

int.TryParse()
Run Code Online (Sandbox Code Playgroud)

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


And*_*mer 19

int myInt = int.Parse(TextBoxD1.Text)
Run Code Online (Sandbox Code Playgroud)

另一种方式是:

bool isConvertible = false;
int myInt = 0;

isConvertible = int.TryParse(TextBoxD1.Text, out myInt);
Run Code Online (Sandbox Code Playgroud)

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


Jac*_*cob 15

您需要解析字符串,还需要确保它是真正的整数格式.

最简单的方法是:

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
}
Run Code Online (Sandbox Code Playgroud)


Mon*_*Zhu 12

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

如果只使用[i]索引操作符访问某个位置的字符串,它将返回a char而不是a string!

String input = "123678";

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

int x = Convert.ToInt32(input[4].toString());  // returns 7
Run Code Online (Sandbox Code Playgroud)


jor*_*lli 10

int x = 0;
int.TryParse(TextBoxD1.Text, out x);
Run Code Online (Sandbox Code Playgroud)

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

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


Sal*_*kar 10

好好享受...

int i = 0;
string s = "123";
i =int.Parse(s);
i = Convert.ToInt32(s);
Run Code Online (Sandbox Code Playgroud)


小智 9

可以对以下数据类型进行stringto转换: 、和反映 .NET 中整数数据类型的其他数据类型intintInt32Int64

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

这显示(仅供参考)数据适配器元素初始化为 int 值。可以直接这样做,

int xxiiqVal = Int32.Parse(strNabcd);
Run Code Online (Sandbox Code Playgroud)

前任。

string strNii = "";
UsrDataAdapter.SelectCommand.Parameters["@Nii"].Value = Int32.Parse(strNii );
Run Code Online (Sandbox Code Playgroud)

链接查看此演示


atl*_*ste 8

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

如果要创建将字符串解析为整数的强大方法,则考虑文化信息非常重要.如果不这样做,将使用当前的文化设置.这可能会给用户带来非常令人讨厌的惊喜 - 或者更糟糕的是,如果您正在解析文件格式.如果您只想要英语解析,最好通过指定要使用的区域性设置简单地使其显式化:

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

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


Mir*_*lec 7

您可以编写自己的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();
    }
}
Run Code Online (Sandbox Code Playgroud)

而且只要在代码中调用即可

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
Run Code Online (Sandbox Code Playgroud)

在这个具体案例中

int yourValue = TextBoxD1.Text.ParseInt();
Run Code Online (Sandbox Code Playgroud)


小智 7

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

第一个主要使用:

string test = "123";
int x = Convert.ToInt16(test);
Run Code Online (Sandbox Code Playgroud)

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

第二个:

int x = int.Parse(text);
Run Code Online (Sandbox Code Playgroud)

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

int i=0;
Int32.TryParse(text, out i) ? i : (int?)null);
Run Code Online (Sandbox Code Playgroud)

享受你的代码......


Jef*_*ffH 6

正如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
}
Run Code Online (Sandbox Code Playgroud)


dee*_*epu 5

int i = Convert.ToInt32(TextBoxD1.Text);
Run Code Online (Sandbox Code Playgroud)


Mis*_*sky 5

您也可以使用扩展方法,因此它会更具可读性(尽管每个人都已经习惯了常规的 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以这样称呼它:

  1. 如果您确定您的字符串是一个整数,例如“50”。

    int num = TextBoxD1.Text.ParseToInt32();
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如果您不确定并希望防止崩溃。

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

为了使其更具动态性,以便您也可以将其解析为 double、float 等,您可以进行通用扩展。


Dea*_*ock 5

你可以使用其中之一,

int i = Convert.ToInt32(TextBoxD1.Text);
Run Code Online (Sandbox Code Playgroud)

要么

int i =int.Parse(TextBoxD1.Text);
Run Code Online (Sandbox Code Playgroud)

  • 这与之前的答案有何不同? (2认同)

小智 5

//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;
}
Run Code Online (Sandbox Code Playgroud)


小智 5

int x = Int32.TryParse(TextBoxD1.Text, out x)?x:0;
Run Code Online (Sandbox Code Playgroud)


laz*_*per 5

您可以在没有 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;
}
Run Code Online (Sandbox Code Playgroud)

  • 参考你的 id,_lazy_-开发人员不会创建这样的方法!;D 好 (2认同)