C # тестирование, чтобы увидеть, является ли строка целым числом? - PullRequest
58 голосов
/ 18 ноября 2009

Мне просто интересно, есть ли что-то встроенное в язык c # или .net, который проверяет, является ли что-то целым

if (x is an int)
   // Do something

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

Ответы [ 11 ]

136 голосов
/ 18 ноября 2009

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

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

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

14 голосов
/ 18 ноября 2009

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

        bool isNumeric = true;
        foreach (char c in "12345")
        {
            if (!Char.IsNumber(c))
            {
                isNumeric = false;
                break;
            }
        }
11 голосов
/ 06 августа 2015

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

var x = "12345";
var isNumeric = !string.IsNullOrEmpty(x) && x.All(Char.IsDigit);
11 голосов
/ 18 ноября 2009

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

    var a = 2;
    if (a is int)
    {
        //is integer
    }
    //or:
    if (a.GetType() == typeof(int))
    {
        //is integer
    }
3 голосов
/ 24 декабря 2014

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

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

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

2 голосов
/ 13 ноября 2014

Эта функция сообщит вам, содержит ли ваша строка ТОЛЬКО символы 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 (), который сообщит вам, может ли ваша строка быть целым числом.
например. «123 \ r \ n» вернет TRUE из int.TryParse (), но FALSE из вышеуказанной функции.

... Зависит от того, на какой вопрос нужно ответить.

1 голос
/ 30 марта 2019

Может быть, это может быть другое решение

try
{
    Console.Write("write your number : ");
    Console.WriteLine("Your number is : " + int.Parse(Console.ReadLine()));
}
catch (Exception x)
{
    Console.WriteLine(x.Message);
}
Console.ReadLine();
1 голос
/ 16 января 2018

Если вы хотите только проверить, является ли она строкой или нет , вы можете поместить ключевые слова "out int" непосредственно в вызов метода. Согласно веб-сайту dotnetperls.com, старые версии C # не допускают такой синтаксис. Делая это, вы можете уменьшить количество строк программы.

string x = "text or int";
if (int.TryParse(x, out int output))
{
  // Console.WriteLine(x);
  // x is an int
  // Do something
}
else
{
  // x is not an int
}

Если вы также хотите получить значения типа int, вы можете написать так:

Метод 1

string x = "text or int";
int value = 0;
if(int.TryParse(x, out value))
{
  // x is an int
  // Do something
}
  else
{
  // x is not an int
}

Метод 2

string x = "text or int";
int num = Convert.ToInt32(x);
Console.WriteLine(num);

Ссылка: https://www.dotnetperls.com/parse

1 голос
/ 12 октября 2016
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 цента.

0 голосов
/ 25 октября 2017

есть простой метод в c # 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

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

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