Как проверить, является ли число целым числом в .NET?

#.net #isinteger

Вопрос:

Допустим, у меня есть строка, содержащая число. Я хочу проверить, является ли это число целым числом.

Примеры

 IsInteger("sss") => false 

IsInteger("123") => true

IsInterger("123.45") =>false
 

Ответ №1:

Вы можете использовать int.TryParse. Он вернет bool, если сможет проанализировать строку и установить для параметра out значение

  int val;
if(int.TryParse(inputString, out val))
{
    //dosomething
}
 

Комментарии:

1. Этот ответ выше верен только в том случае, если число всегда будет от -2 147 483 648 до 2 147 483 647. Если он больше, вам понадобится много времени. Попробуйте проанализировать(). НАПРИМЕР: 16-значный номер кредитной карты…

Ответ №2:

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

Вариант 1предпочтительно использовать Int32.Попробуй разобраться.

 int res;
Console.WriteLine(int.TryParse("sss", out res));
Console.WriteLine(int.TryParse("123", out res));
Console.WriteLine(int.TryParse("123.45", out res));
Console.WriteLine(int.TryParse("123a", out res));
 

Это выводит:

 False
True
False
False
 

Вариант 2 — используйте регулярные выражения

 Regex pattern = new Regex("^-?[0-9] $", RegexOptions.Singleline);
Console.WriteLine(pattern.Match("sss").Success);
Console.WriteLine(pattern.Match("123").Success);
Console.WriteLine(pattern.Match("123.45").Success);
Console.WriteLine(pattern.Match("123a").Success);
 

Это выводит:

 False
True
False
False
 

Комментарии:

1. Привет, проголосовал за дополнение регулярным выражением. Это то, что я не думаю достаточно использовать в своей повседневной работе. Спасибо.

Ответ №3:

Вы можете использовать System.Int32.Попробуйте проанализировать и сделать что-то вроде этого…

 string str = "10";
int number = 0;
if (int.TryParse(str, out number))
{
    // True
}
else
{
    // False
}