Martin
Martin

Reputation:

How to check if a number is an integer in .NET?

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

Upvotes: 2

Views: 13477

Answers (3)

mattlant
mattlant

Reputation: 15451

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
}

Upvotes: 18

Jorge Ferreira
Jorge Ferreira

Reputation: 97839

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

Upvotes: 5

Alex McBride
Alex McBride

Reputation: 7011

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
}

Upvotes: 2

Related Questions