首页 新闻 会员 周边

如何将"+","-"等字符串转换为相应的运算符?

0
悬赏园豆:15 [已解决问题] 解决于 2010-10-26 15:49

如题

例如最开始学变成时的计算器小程序,可不可以让用户输入“1+1”字符串,就返回2

wdwwtzy的主页 wdwwtzy | 初学一级 | 园豆:114
提问于:2010-08-26 15:07
< >
分享
最佳答案
0

动态编译。

收获园豆:3
Astar | 高人七级 |园豆:40805 | 2010-08-26 15:10
可不可以稍微多给点信息?多谢了
wdwwtzy | 园豆:114 (初学一级) | 2010-08-26 15:20
@wdwwtzy:动态编译类就是动态执行一个类或者一个方法,而这些都是字符串形式存在,和你的想法差不多,相当于动态语法解析。你可以查一些这方面的资料。http://terrylee.cnblogs.com/archive/2006/01/09/313616.html
Astar | 园豆:40805 (高人七级) | 2010-08-26 15:24
嗯 我有了解了,似乎跟反射沾点关系。可是动态编译的话似乎性能比较低?如果我只会有4则运算的话,是不是直接用if else就好了……
wdwwtzy | 园豆:114 (初学一级) | 2010-08-26 15:26
@wdwwtzy:对的,直接if和替换吧。
Astar | 园豆:40805 (高人七级) | 2010-08-26 15:28
其他回答(5)
0

计算器是这么做的,用一个stack分析输入字符串 "1+1",遇到 + 就把 + 之前的 "1"转换成 int,+之后输入的字符也转换成 int,如下:

int m = int.Parse("1");

int n = int.Parse("1");

int sum = m + n;

我只是简单举个例子,实际的词法分析复杂的多.

收获园豆:3
Launcher | 园豆:45045 (高人七级) | 2010-08-26 15:18
嗯,问题是如何识别把字符串"+"转变成+呢……
支持(0) 反对(0) wdwwtzy | 园豆:114 (初学一级) | 2010-08-26 15:20
@wdwwtzy: switch(ch) { case '+' : { return m+n;} case '' : { return m-n;} }
支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2010-08-26 16:36
0

字符串输入 然后 把数字转换  接着根据  中间的字符来判断和做 了 啊

收获园豆:3
Acmen | 园豆:173 (初学一级) | 2010-08-26 17:09
0

.net 的 DataSet 有一个 Calculated DataColumn 这个东西可以计算表达式的,你输入一个表达式,它自动就可以给算出来,很方便。你参考下面文章

http://msdn.microsoft.com/en-us/library/3df0c8ey%28VS.71%29.aspx

http://ondotnet.com/pub/a/dotnet/2003/05/26/datacolumn_expressions.html

收获园豆:3
eaglet | 园豆:17139 (专家六级) | 2010-08-27 08:02
0

C#.NET 动态计算表达式值

http://www.cnblogs.com/livexy/archive/2010/07/05/1771683.html

调用方法:

Expression expression = new Expression("return 1+1;");
return expression.Compute(0);

收获园豆:3
熊哥 | 园豆:682 (小虾三级) | 2010-08-27 11:02
0
xxwgcg | 园豆:243 (菜鸟二级) | 2012-12-04 15:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册