Search code examples
c#linqlambdacontain

How to search for number in string with method Contains and Linq in c#?


I create calculator which have buttons with numbers and operators for basic operation (+, -,...) and just want to filter buttons with numbers to detect when is clicked number (between 0-9). Also i put new eventhadler which convert sender to button.

I wondering what will be nice and easy way to filter the buttons with numbers (using linq) What did i try so far is

if(btn.Text == btn.Text.Contains(x => x >= '0' && x <= '9')) 
    MessageBox.Show("number " + btn.Text + " is pressed!");

How to make upper code workable?


Solution

  • If all you want to know is that is it a number or not do this. No LINQ is required

    LINQ Way to check the numbers are between 0 and 9

    if(yourstring.ToCharArray().Where(c=> c < '0' || c > '9').Any())
      return false;
    else
     return true;
    

    To check that it contains a valid number

    double num;
    if (double.TryParse(btn.Text, out num))
    {
        // It's a number!
    }
    

    or to check less than 10 without linq

    static bool IsLessThanTen(string str)
    {
        foreach (char c in str)
        {
            if (c < '0' || c > '9')
                return false;
        }
    
        return true;
    }