日期:2014-05-18  浏览次数:20784 次

特殊舉表達式難題,有碰到過的朋友沒,急!
我在DATAGRIDVIEW中的第2個CELL中要輸入,例如下列表達式:
(D01*D02)/2
(D01*D02)*D03/2
(D01+D02)*2
D01*4
  ((D01+D02)-D03*D04/D02)*D02
其中D01,D02......都是變量(隻能是D開頭,後接兩個數字),
運算符隻能為(+,-,*,/),
另外還可加小括號,
乘除加減(*,/,+,-)Double型數字
問題:檢查這些表達式合法性?即是正確表達式否?

------解决方案--------------------
第一步:用正则表达式的替换功能给变量赋值,这样得到了一个数学算式字符串

第二步:直接计算,若是算式不合法,肯定有异常抛出,捕获异常提示算式不合法或另作其他处理

关于计算字符串格式的算式,看这里
http://www.codeproject.com/csharp/runtime_eval.asp
------解决方案--------------------
这个用正则表达式恐怕很难办到,
因为你的要求基本可以看着是一个小型的词法分析了,


------解决方案--------------------

1.用正则表达式对表达式进行分组,像operand(操作数)和operate(操作符)及adjunct(修饰符)这样取出进行预存储(推荐使用堆栈).
2.用程序对堆栈内存储的数据进行词法分析.


------解决方案--------------------
看到头痛。