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

我该怎么做?


当前回答

您可以借助parse方法将字符串转换为整数值。

Eg:

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

其他回答

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
}

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

TryParse方法类似于Parse方法,TryParse方法除外如果转换失败。它消除了需要使用异常处理来测试事件中的FormatExceptions无效,不能已成功解析。-世界末日

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

转换类的函数,即convert.ToInt16()、convert.ToInt32()、转换.ToInt64()或使用Parse和TryParse函数。这里给出了示例。

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

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-例如,我不需要疯狂的逻辑来将字符串转换为类。

要使用它将字符串转换为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);
}

您可以在没有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;
}