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
}
Share:
11,715
Admin
Author by

Admin

Updated on November 18, 2022

Comments

  • Admin
    Admin over 1 year

    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
    mattlant over 15 years
    Hi, gave a vote for supplementing with regex. Its something i dont think of using enough in my daily work. Thanks.
  • Ryan Sampson
    Ryan Sampson about 15 years
    That 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...