日期:2014-05-19  浏览次数:20785 次

送点分....(怎样处理含有关系表达式的字符串)
在C#中,如何将含有关系表达式的字符串里的关系表达式进行运算,例如:      
    string       s= "(data> =para   )&&   (data!=null) ";      
         
    如何得到表达式:(data> =para   )&&   (data!=null)     的值

------解决方案--------------------
if((data> =para )&& (data!=null))
{

}
------解决方案--------------------
((data> =para )&&(data!=null)).ToString()

关系表达式成立 返回 True 否则返回 False

------解决方案--------------------
(data> =para )&& (data!=null).ToString() 是0或1 或其他的 测试以下就知道了
------解决方案--------------------
http://community.csdn.net/Expert/topic/5370/5370108.xml?temp=.6800043
http://community.csdn.net/Expert/topic/5371/5371498.xml?temp=.8397943
这两个贴子是计算数学表达式 其中采用C#编译的方式也适用于bool表达式
------解决方案--------------------
呵呵,楼上已经搞定
------解决方案--------------------
JF
------解决方案--------------------
bool b = ((data> =para ) && (data!=null));
------解决方案--------------------
在静态语言里面实现这个还就是由点麻烦
不过C#里面是由办法的,呵呵,具体每弄过

或者你引进一下IronPython 一行基本上就能搞定你的要求了
------解决方案--------------------
up
------解决方案--------------------
lz是不是要把字符串 s 转换成表达式:(data> =para )&& (data!=null)
------解决方案--------------------
这个需要字符分析或动态编译
------解决方案--------------------
别的好像没有什么办法吧
------解决方案--------------------
呵呵,这个问题有点儿意思
------解决方案--------------------
问题是
程序运行以后,
再把这个语句:(data> =para )&& (data!=null)
编译成机器语言。
------解决方案--------------------
只有jf了
------解决方案--------------------
我觉得应该做一个语法分析:
简单的思路是首先将变量名和运算符分开,例如string s= "(data> =para )&& (data!=null) ";
读字符串中的每一个值,第一个读到 '( ', 然后将遇到 ') '之间所有的变量及运算符压栈,第二个字符是 'd ',它是一个字符所以继续读,直到遇到 '> ',这时将 "data "存到一个给定的变量中,以此类推,所有的变量及它们之间的操作都能够分析出来,不过这个就是有点麻烦
------解决方案--------------------
这需要你自己去写一个表达式解析程序。往上有好多现成的。呵呵。
------解决方案--------------------
接分
------解决方案--------------------
up
------解决方案--------------------
up
------解决方案--------------------
JF