How to check if a number is an integer in .NET?
11,715
Solution 1
You can use int.TryParse. It will return a bool if it can parse the string and set your out parameter to the value
int val;
if(int.TryParse(inputString, out val))
{
//dosomething
}
Solution 2
There are two immediate options that you can use.
Option 1 - preferred - use Int32.TryParse.
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));
This outputs:
False
True
False
False
Option 2 - use regular expressions
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);
This outputs:
False
True
False
False
Solution 3
You can use System.Int32.TryParse and do something like this...
string str = "10";
int number = 0;
if (int.TryParse(str, out number))
{
// True
}
else
{
// False
}

Author by
Admin
Updated on November 18, 2022Comments
-
Admin about 1 hour
Say I've got a string which contains a number. I want to check if this number is an integer.
Examples
IsInteger("sss") => false IsInteger("123") => true IsInterger("123.45") =>false
-
mattlant about 14 yearsHi, gave a vote for supplementing with regex. Its something i dont think of using enough in my daily work. Thanks.
-
Ryan Sampson over 13 yearsThat answer above is only correct if the number will always be -2,147,483,648 to 2,147,483,647. If it is larger you will need long.TryParse(). EG: a 16 digit credit card number...