tags:

views:

4214

answers:

6

I am having an string like this

string str = "dfdsfdsf8fdfdfd9dfdfd4"

I need to check whether the string contains number by looping through the array.

A: 

You could use a Regular Expression for that.

James
+10  A: 

What about a regular expression:

bool val = System.Text.RegularExpressions.Regex.IsMatch(str, @"\d");
kgiannakakis
+6  A: 

If you are looking for an integer value you could use int.TryParse:

int result;
if (int.TryParse("123", out result))
{
    Debug.WriteLine("Valid integer: " + result);
}
else
{
    Debug.WriteLine("Not a valid integer");
}

For checking a decimal number, replace int.TryParse with Decimal.TryParse. Check out this blog post and comments "Why you should use TryParse() in C#" for details.

If you need decimal numbers, you could alternatively use this regular expression:

return System.Text.RegularExpressions.Regex.IsMatch(
   TextValue, @"^-?\d+([\.]{1}\d*)?$");

And finally another alternative (if you are not religiously against VB.NET), you could use the method in the Microsoft.VisualBasic namespace:

Microsoft.VisualBasic.Information.IsNumeric("abc");
splattne
A: 

If you're a linq junkie like me, you'd do it this way

string s = "abc1def2ghi";
bool HasNumber = (from a in s.ToCharArray() where a >= '0' && a <= '9' select a).Count() > 0;
GeekyMonkey
Good God, that's hideous. If I find that in a code review I'd (a) excise it; (b) excise you.
endian
A: 

in C# 2.0, try this:

        string str = "dfdsfdsf8fdfdfd9dfdfd4";

        for (int i = 0; i < str.Length; i++)
        {
            int result;
            if (int.TryParse(str[i].ToString(), out result))
            {
                //element is a number            
            }
            else
            {
                // not a number
            }
        }
Arief Iman Santoso
+4  A: 

If you're going to loop through the string, DON'T use int.TryParse... that's way too heavy. Instead, use char.IsNumber();

example:

foreach (char c in myString)
    if (char.IsNumber(c))
        return true;
Timothy Khouri
Instead of using loop, use of regular expression is a good option.
Shekhar