【问题标题】:How to get only numbers and math operators in string? [closed]如何仅获取字符串中的数字和数学运算符? [关闭]
【发布时间】:2020-04-18 07:57:30
【问题描述】:

我正在制作基本的 C# 计算器。 它使用用户消息并检测它是否包含数学运算符来识别用户发送的数学问题。 但问题是当用户发送“br + uh”程序崩溃时,因为“找不到列[br]”。 我需要从用户消息中过滤单词,或者我只想获取数字(int、double、float 等)和数学运算符。请帮忙 code

【问题讨论】:

  • 您正在使用 DataTable 来评估表达式。您应该捕获它的异常并将其用作检测它是否是有效表达式的方法。另外,我建议将您的代码粘贴到问题中(不链接到它的屏幕截图)。
  • 请不要发布代码图片。而是使用格式化的代码块在您的问题中发布代码

标签: c# math calculator calc


【解决方案1】:

您正在使用 DataTable 来评估表达式(这很简洁)。您应该捕获它的异常并将其用作检测它是否是有效表达式的方法

var msg = e.Message.Text;
try 
{
    var output = new DataTable().Compute(msg, null).ToString();
    // It was a valid expression - do something with the result
    Send(output);
}
catch (Exception ex)
{
    // Not a valid expression
    // Do something in this error case such as providing the detail back to the user
    SendError(ex.Message);
}

【讨论】:

    【解决方案2】:

    至少不会使其崩溃的超级简单方法是查看TryParse 方法。
    更好的是,例如使用正则表达式并编写一个很好的正则表达式,这样你的计算器只接受它能够处理的输入。

    【讨论】:

      猜你喜欢
      • 2017-03-18
      • 2011-09-13
      • 1970-01-01
      • 2012-10-08
      • 1970-01-01
      • 2021-10-27
      • 2014-04-08
      • 2015-10-04
      • 1970-01-01
      相关资源
      最近更新 更多