it-roy-ru.com

Как я могу преобразовать строку в Int?

У меня есть TextBoxD1.Text, и я хочу преобразовать его в int, чтобы сохранить его в базе данных.

Как я могу это сделать?

545
turki2009

Попробуй это:

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

905
Andrew Hare
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(..);
}
46
Babak Naffas
int.TryParse()

Он не выдаст, если текст не числовой.

31
n8wrl
int myInt = int.Parse(TextBoxD1.Text)

Другой способ будет:

bool isConvertible = false;
int myInt = 0;

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

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

18
Andre Kraemer

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

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

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

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

Смотрите Метод Int32.TryParse (String, Int32) для получения более подробной информации.

10
jorelli

Наслаждайся этим...

int i = 0;
string s = "123";
i =int.Parse(s);
i = Convert.ToInt32(s);
9
Salim Latif Waigaonkar

Будьте осторожны при использовании Convert.ToInt32 () на символе!
Он вернет код TF-16 символа!

Если вы получаете доступ к строке только в определенной позиции, используя оператор индексации [i], он вернет char, а не string!

String input = "123678";

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

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

Хотя здесь уже есть много решений, описывающих 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.

8
atlaste

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

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();
6
Miroslav Holec

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

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

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

или же

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

Вы можете преобразовать строку в int в C #, используя:

Функции класса преобразования, т. Е. Convert.ToInt16(), Convert.ToInt32(), Convert.ToInt64() или с использованием функций Parse и TryParse. Примеры приведены здесь .

4
Atif
//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;
}
4
Jsprings
int x = Int32.TryParse(TextBoxD1.Text, out x)?x:0;
4
Mohammad Rahman

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

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

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

int xxiiqVal = Int32.Parse(strNabcd);

Ex.

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

Ссылка для просмотра этой демонстрации .

4
Edwin b

Это сделало бы

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

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

int xi=Int32.Parse(x);

См. Microsoft Developer Network для получения дополнительной информации

4
Tony Stark

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

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

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

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

3
Misha Zaslavsky

как я всегда делаю это так

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

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

2
Isaac Newton

Вы можете преобразовать строку в целочисленное значение с помощью метода разбора.

Например:

int val = Int32.parse(stringToBeParsed);
int x = Int32.parse(1234);
2
Codemaker
int i = Convert.ToInt32(TextBoxD1.Text);
2
deepu

Самый простой способ - использовать помощник по расширению:

public static class StrExtensions
{
  public static int ToInt(this string s, int defVal = 0) => int.TryParse(s, out var v) ? v : defVal;
  public static int? ToNullableInt(this string s, int? defVal = null) => int.TryParse(s, out var v) ? v : defVal;
}

Использование так просто:

var x = "123".ToInt(); // 123
var y = "abc".ToInt(); // 0

string t = null;
var z = t.ToInt(-1); // -1
var w = "abc".ToNullableInt(); // null
0
S.Serpooshan

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

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

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

0
Kartikey Kushwaha

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

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

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;
    }
0
jul taps

Этот код работает для меня в Visual Studio 2010:

int someValue = Convert.ToInt32(TextBoxD1.Text);
0
Sarib Shamim