How to Determine if String is an Integer Using C#

I am having locating information on how to determine if a string is an integer in C#. Are there any built in functions that could look at this and deterine if the string is a integer? Any help would be greatly appreciated.
thenthorn1010Asked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Alfredo Luis Torres SerranoASP .Net DeveloperCommented:
Try the static IsNumber() method on the Char class.

E.g.:

char c = 'a';
if (Char.IsNumber(c))
{
//do whatever...
}

Hope that helps.
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
wasiftoorCommented:
You are use the built in parse functions for this purpose. Sample code attached.

string Str = textBox1.Text.Trim();
double Num;
bool isNum = double.TryParse(Str, out Num);
if (isNum)
MessageBox.Show(Num.ToString());
else
MessageBox.Show("Invalid number");

Open in new window

0
hafeezmcaCommented:
Hi,

Place a textbox, command button and label.
Place the following code to acheive the task.

protected void Button1_Click(object sender, System.EventArgs e)
{
      bool result = false;
      result = IsInt(this.TextBox1.Text);
      if (result == true) {
            this.Label1.Text = "Integer";
      } else {
            this.Label1.Text = "Non Integer";
      }

}

private bool IsInt(string param)
{
      try {
            int i = int.Parse(param);
            return true;
      } catch {
            return false;
      }
}

There are other ways you could do this as well like making sure that the only numeric characters are entered in the texbox by using Range validator control. This will wont require you to write a single line of code. It can be done at design time itself.
0
Fundamentals of JavaScript

Learn the fundamentals of the popular programming language JavaScript so that you can explore the realm of web development.

Chinmay PatelChief Technical NinjaCommented:
Hi thenthorn1010,

I would use wasiftoor's solution.

It's always good to use TryParse methods, just don't use double.TryParse. use int.TryParse.
Also this TryParse methods are available for many primitive data types.

Regards.
Chinmay,
0
Navneet.Net Full Stack DeveloperCommented:
Hi!

Add reference to your Project
Microsoft.VisualBasic


using Microsoft.VisualBasic;

then in project try

Information.IsNumeric()


Thanks!
0
Jacques Bourgeois (James Burger)PresidentCommented:
Chinmay_Patel answer is the only one that it really good. All the other ones have problems.

Char.IsNumber will say OK with numbers that are not integer.
Same with Double.TryParse.
Same thing with Information.IsNumeric, that is VB anyway. Why use VB in C# when the framework has methods to do the job?
int.Parse imply a try...catch, while TryParse does the job without a try...catch, which is always better because triggering exceptions requires a lot of resources.

So the only way to get a good result without involving too much overhead is to use int.TryParse.
0
Navneet.Net Full Stack DeveloperCommented:
@JamesBurger

Once code is compiled nothing is VB.Net or C#, Everything is .Net(MSIL).
Also IsNumeric is tried and tested.
When things are available, why re-invent the wheel.

Also which has beter chances of success?

            int res = 0;
            int.TryParse("2147483648",out res);
            bool isNum = Information.IsNumeric("2147483648");

Ofcourse I may be wrong saying IsNumeric is good.

Thanks!
0
Navneet.Net Full Stack DeveloperCommented:
0
Jacques Bourgeois (James Burger)PresidentCommented:
@navneethedge

Look at the date of the article you are pointing: 2003, 9 years ago, that is a long time. And it was at the beginning of the year, we were still in Visual Studio 2002, with framework 1.0. Things have change a bit since then. TryParse did not exist at that time.

TryParse is part of the framework and available in all languages. IsNumeric forces you to reference a library from another language to work in C#, a very strange idea considering that C# has what you need.

And the main problem with the question discussed here is that it is about knowing if a string is an integer. If a string contains "1.2", IsNumeric will return True while the string does not contain an integer. Bad answer.

TryParse adapt to any type you use it with. If you call it on a Byte for instance, it won't return True on negative values or if the value in the String is higher than 255. It is a lot more precise. If you were to use IsNumeric, you would have to check for those 2 conditions. IsNumeric does it in one shot.
0
Navneet.Net Full Stack DeveloperCommented:
@JamesBurger : thanks and agree.
0
Chinmay PatelChief Technical NinjaCommented:
@jamesburger
:P Thanks :) Saved Me Some Time ;)
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
C#

From novice to tech pro — start learning today.