Как преобразовать String в Int?

У меня

TextBoxD1.Text

и я хочу преобразовать его в 'int', чтобы сохранить его в базе данных. Как я могу это сделать?

Ответ 1

Попробуйте следующее:

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 не генерирует исключения, если преобразование не выполняется. Это устраняет необходимо использовать обработку исключений для тестирования для исключения FormatException что s недействителен и не может быть успешно проанализирован. - MSDN

Ответ 2

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

Ответ 3

int.TryParse()

Он не будет бросать, если текст не является числовым.

Ответ 4

Вам нужно проанализировать строку, и вам также необходимо убедиться, что она действительно находится в формате целого числа.

Самый простой способ:

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
}

Ответ 5

int myInt = int.Parse(TextBoxD1.Text)

Другой способ:

bool isConvertible = false;
int myInt = 0;

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

Разница между двумя заключается в том, что первый из них будет генерировать исключение, если значение в вашем текстовом поле не может быть преобразовано, а второе - только false.

Ответ 6

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

Оператор TryParse возвращает логическое значение, представляющее, выполнено ли синтаксическое разбор или нет. Если это удалось, анализируемое значение сохраняется во втором параметре.

Подробнее см. Int32.TryParse Method (String, Int32).

Ответ 7

Наслаждайтесь...

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

Ответ 8

Как объясняется в документации 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
}

Ответ 9

Хотя здесь уже много решений, описывающих int.Parse, во всех ответах есть что-то важное. Как правило, строковые представления числовых значений различаются по культуре. Элементы числовых строк, таких как символы валюты, разделители групп (или тысяч) и десятичные разделители, различаются по культуре.

Если вы хотите создать надежный способ синтаксического анализа целой строки, важно учитывать информацию о культуре. Если вы этого не сделаете, будут использованы текущие настройки культуры. Это может дать пользователю довольно неприятный сюрприз - или, что еще хуже, если вы разбираете форматы файлов. Если вам просто нужен синтаксический анализ на английском языке, лучше просто сделать его явным, указав настройки культуры, которые будут использоваться:

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

Для получения дополнительной информации ознакомьтесь с CultureInfo, в частности NumberFormatInfo в MSDN.

Ответ 10

Вы можете написать свой собственный метод расширения

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

Ответ 11

Вы можете использовать либо

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

или

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

Ответ 12

Вы также можете использовать метод расширения, поэтому он будет более читабельным (хотя все уже привыкли к регулярным функциям 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);
    }
}

И тогда вы можете так называть:

  • Если вы уверены, что ваша строка является целым числом, например "50".

    int num = TextBoxD1.Text.ParseToInt32();
    
  • Если вы не уверены и хотите предотвратить сбои.

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

Чтобы сделать его более динамичным, вы можете его разобрать, чтобы удвоить, поплавать и т.д., вы можете сделать общее расширение.

Ответ 13

Преобразование string в int может быть выполнено для: int, Int32, Int64 и других типов данных, отражающих целочисленные типы данных в .NET

Ниже приведен пример этого преобразования:

Этот элемент отображения данных (для информации) инициализируется значением int. То же самое можно сделать так же, как

int xxiiqVal = Int32.Parse(strNabcd);

Исх.

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

Ссылка, чтобы увидеть эту демонстрацию.

Ответ 14

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

Ответ 15

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

Ответ 16

Будьте внимательны при использовании Convert.ToInt32() на char! Он вернет код ASCII! Если вам может понадобиться извлечь только определенную позицию внутри строки.

String input = "123678";

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

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

Ответ 17

способ, которым я всегда это делаю, похож на это

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

вот как я это сделаю, надеюсь, это поможет. (

Ответ 18

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

Ответ 19

Вы можете попробовать это, он будет работать:

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

Строковое значение в переменной TextBoxD1.Text будет преобразовано в Int32 и будет сохранено в x.

Ответ 20

Если вы ищете длинный путь, просто создайте свой метод:

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

Ответ 22

вы можете сделать, как показано ниже, без 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 ;
}

Ответ 23

МЕТОД 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");
}

Ответ 24

это может вам помочь, 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.");
        }
    }
}