Подтвердить что ты не робот

С#, чтобы проверить, является ли строка целым числом?

Я просто любопытно, есть ли что-то, встроенное в язык С# или в .net framework, который проверяет, является ли что-то целым числом

if (x is an int)
   // Do something

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

4b9b3361

Ответ 1

Используйте метод int.TryParse.

string x = "42";
int value;
if(int.TryParse(x, out value))
  // Do something

Если он успешно разбирает, он вернет true, а результат out будет иметь свое значение как целое число.

Ответ 2

Я думаю, что я помню, что смотрел сравнение производительности между int.TryParse и int.Parse Regex и char.IsNumber и char.IsNumber был самым быстрым. Во всяком случае, независимо от производительности, вот еще один способ сделать это.

        bool isNumeric = true;
        foreach (char c in "12345")
        {
            if (!Char.IsNumber(c))
            {
                isNumeric = false;
                break;
            }
        }

Ответ 3

Для решения Wil P (см. выше) вы также можете использовать LINQ.

var x = "12345";
var isNumeric = !string.IsNullOrEmpty(x) && x.All(Char.IsDigit);

Ответ 4

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

    var a = 2;
    if (a is int)
    {
        //is integer
    }
    //or:
    if (a.GetType() == typeof(int))
    {
        //is integer
    }

Ответ 5

Эта функция сообщит вам, содержит ли ваша строка ТОЛЬКО символы 0123456789.

private bool IsInt(string sVal)
{
    foreach (char c in sVal)
    {
         int iN = (int)c;
         if ((iN > 57) || (iN < 48))
            return false;
    }
    return true;
}

Это отличается от int.TryParse(), который скажет вам, будет ли ваша строка COULD BE целой. например. "123\r\n" вернет TRUE из int.TryParse(), но FALSE из вышеуказанной функции.

... Просто зависит от вопроса, который вам нужно ответить.

Ответ 6

его простой... используйте этот кусок кода

bool anyname = your_string_Name.All(char.IsDigit);

он вернет true, если ваша строка имеет целочисленный другой мудрый false...

Ответ 7

Я кодировал около 2 недель и создал простую логику для проверки целого числа.

    Console.WriteLine("How many numbers do you want to enter?"); // request a number
    string input = Console.ReadLine(); // set the input as a string variable
    int numberTotal; // declare an int variable

    if (!int.TryParse(input, out numberTotal)) // process if input was an invalid number
    {
        while (numberTotal  < 1) // numberTotal is set to 0 by default if no number is entered
        {
            Console.WriteLine(input + " is an invalid number."); // error message
            int.TryParse(Console.ReadLine(), out numberTotal); // allows the user to input another value
        }

    } // this loop will repeat until numberTotal has an int set to 1 or above

вы также можете использовать приведенное выше в цикле FOR, если хотите, не объявляя действие в качестве третьего параметра цикла, например

    Console.WriteLine("How many numbers do you want to enter?");
    string input2 = Console.ReadLine();

    if (!int.TryParse(input2, out numberTotal2))
    {
        for (int numberTotal2 = 0; numberTotal2 < 1;)
        {
            Console.WriteLine(input2 + " is an invalid number.");
            int.TryParse(Console.ReadLine(), out numberTotal2);
        }

    }

если вам не нужен цикл, просто удалите всю скобку цикла

Ответ 8

private bool isNumber(object p_Value)
    {
        try
        {
            if (int.Parse(p_Value.ToString()).GetType().Equals(typeof(int)))
                return true;
            else
                return false;
        }
        catch (Exception ex)
        {
            return false;
        }
    }

То, что я написал некоторое время назад. Некоторые хорошие примеры выше, но только мои 2 цента стоит.

Ответ 9

существует простой метод в С# 7

// if input 10    
var input = int.TryParse(Console.ReadLine(), out var output);
// input = true, output = 10

// or if input will be "abcd", you will get:
// input = false, output = 0

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