【问题标题】:Expression for arithmetic operations in c#c#中算术运算的表达式
【发布时间】:2013-07-09 05:52:23
【问题描述】:

我有一个文本框,我在其中给出了一个算术表达式。 (a-b)/(a/5)*(B+2) 之类的一些类似的表达式。我需要对给定表达式进行验证。 此结果中只有一个结果。结果是次要的。主要要求是验证。 如果表达式不正确,我应该将其视为“无效表达式”。

【问题讨论】:

    标签: asp.net .net c#-4.0


    【解决方案1】:

    如果您在 Windows 窗体环境中工作,您有一个名为 Leave 的事件,当您输入文本框并离开它时,此事件将自动引发,因此您可以编写一个事件处理程序来检查文本框输入的验证,如果您在 asp.net 和 web 表单应用程序中工作,您可以使用 JavaScript 或 jQuery 来验证结果,或者您可以使用 asp.net 内置的验证控件..

    【讨论】:

    • 是的。但我应该验证给定的表达式..我怎么能给出呢? '实际上是在询问验证表达式而不是显示验证“消息”。'我正在处理 Web 表单。我试过这样的东西.. function mathEval (exp) { var reg = /^(?=.*\d{2})(?=.*[a-zA-Z]{2}).{8, }$/; if (!reg.test(exp)) { alert('no');返回假; } 其他 { 警报(“是”);返回真; }
    • 您可以通过 asp.net 中的正则表达式验证器来执行此操作,如果您在此工具中选择客户端验证,它将为您构建 javascript 代码
    • 正则表达式不行,因为有限状态机不足以处理简单的情况,例如平衡括号。你至少需要一台堆栈机器才能做到这一点。
    • 可以在这里找到有趣的解决方案:stackoverflow.com/questions/355062/…
    【解决方案2】:

    您正在寻找一个涉及解析文本的评估评估器。 似乎你想要在 javascript 中使用这个(你还不够具体),但我认为这个 SO:Safe evaluation of arithmetic expressions in Javascript 的公认答案可能会对你有所帮助。

    另外,作为记录,我不认为这种答案值得任何 +1,因为我所做的只是为你搜索这个。

    【讨论】:

    • 谢谢。该链接适用于数值。我的要求是:在一页中我使用变量 (A+B)*(C-D)/E 像这样。我在这里不给出任何数字。对于这些变量,我在另一页中给出值。对于 A =1, B=2 ,c= 12 等...应该做的是,它应该检查表达式 (A+B)*(C-D)/E 并判断它是否有效。如果我给出类似 (A+B-C+-( 它应该给出无效。当然我正在使用 javascript。请耐心等待我。我是 c# 和 java 脚本的新手...
    • 先用'1'或类似的东西替换任何字母
    • 我不是要求评估结果..这将在其他页面中完成..我们要做的第一件事是给出一个带有变量的算术表达式..之后这些变量的值将是在其他页面中给出,然后将评估结果..评估结果是次要的,我在这里不需要它。我需要的是我需要给出一个带有变量的表达式,例如:(a+b)/(b*d-a)+a 这应该被检查,如果我们以不正确的格式给出它,则应该抛出验证消息。例如:(a+b++)(c-*d)((
    • 不,我知道你不是,但评估器可能有一个简单的“解析”方法,如果没有,如果解析失败,它几乎肯定会抛出异常。您可以简单地将其包装在 try..catch 中并以这种方式显示错误消息。
    • 我一直在努力研究这个算术表达式的正则表达式模式。但无法成功。你能给我一个模式,让我在操作数之间只接受一个运算符。这样它至少会让我的表达变得最低限度……
    猜你喜欢
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    • 2020-01-15
    • 2019-05-29
    相关资源
    最近更新 更多