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