c# - toint - unity string to int




如何將字符串轉換為Int? (17)

我有一個TextBoxD1.Text ,我想將它轉換為一個int來存儲在數據庫中。

我怎樣才能做到這一點?


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

你也可以使用擴展方法 ,所以它會更具可讀性(儘管每個人都已經習慣了常規的分析函數)。

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. 如果您不確定並且想要防止崩潰。

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

為了使它更具動態性,所以你可以將它解析為double,float等等,你可以做一個通用的擴展。


你可以試試這個,它會工作:

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

變量TextBoxD1.Text中的字符串值將被轉換為Int32並存儲在x中。


你需要解析字符串,並且你還需要確保它確實是一個整數的格式。

最簡單的方法是:

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
}

在char上使用Convert.ToInt32()時要小心! 它會返回ASCII碼! 如果您可能需要只提取字符串中的某個位置。

String input = "123678";

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

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

好好享受...

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

string轉換為int可以用於: intInt32Int64和反映.NET中整數數據類型的其他數據類型

以下示例顯示了此轉換:

這個顯示(對於info)數據適配器元素初始化為int值。 同樣可以直接完成,

int xxiiqVal = Int32.Parse(strNabcd);

防爆。

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

鏈接看這個演示


您可以在不使用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");
}

正如Int32.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
}

這可能會幫助你; 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.");
        }
    }
}


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

Convert.ToInt32( TextBoxD1.Text );

如果您確信文本框的內容是有效的整數,請使用此選項。 一個更安全的選擇是

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

這將為您提供一些可以使用的默認值。 Int32.TryParse也返回一個布爾值,表示它是否能夠解析,所以你甚至可以用它作為if語句的條件。

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

int myInt = int.Parse(TextBoxD1.Text)

另一種方法是:

bool isConvertible = false;
int myInt = 0;

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

兩者的區別在於,如果文本框中的值無法轉換,則第一個會拋出異常,而第二個只會返回false。


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

TryParse語句返回表示解析是否成功的布爾值。 如果成功,解析的值將存儲到第二個參數中。

有關更多詳細信息Int32.TryParse請參閱Int32.TryParse


int.TryParse()

如果文本不是數字,它不會拋出。





type-conversion