0

我创建了具有数字按钮和基本操作运算符(+、-、...)的计算器,并且只想过滤带有数字的按钮以检测何时单击数字(0-9 之间)。我还放置了新的事件处理程序,它将发送者转换为按钮。

我想知道用数字过滤按钮的好方法是什么(使用linq)到目前为止我尝试的是什么

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

如何使上层代码可行?

4

4 回答 4

5

来吧,满足您的即时需求:

if(btn.Text.All(char.IsDigit))
{
    //Do your stuff
}
于 2013-08-08T10:22:50.397 回答
2

如果您只想知道这是一个数字还是不这样做。不需要 LINQ

LINQ 检查数字在 0 到 9 之间的方法

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

检查它是否包含有效数字

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

或在没有 linq 的情况下检查小于 10

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

    return true;
}
于 2013-08-08T10:24:28.247 回答
2

如果您需要检查按钮文本中的至少一个数字,请在下面使用

return btn.Text.Any(char.IsDigit)

如果你写计算器,你最好检查一下NCalc - .NET 的数学表达式评估器和这个CodeProject 教程

于 2013-08-08T10:33:58.157 回答
1

这应该工作

bool hasNumeric = yourString.IndexOfAny("0123456789".ToCharArray()) > -1;
于 2013-08-08T10:40:35.283 回答