tags:

views:

1046

answers:

3

Say I've got a string which contains a number. I want to check if this number is an integer.

Example

IsInteger("sss") => false

IsInteger("123") => true

IsInterger("123.45") =>false

+15  A: 

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
}
mattlant
This post expands on this correct answer: http://fatagnus.com/why-you-should-use-tryparse-in-c/
Turnkey
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...
Aros
+2  A: 

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
}
Fara
+3  A: 

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
smink
Hi, gave a vote for supplementing with regex. Its something i dont think of using enough in my daily work. Thanks.
mattlant