我想在C#中构建一个计算器。现在我想知道是否有可能做一个计算,这是在一个文本框内。例如,用户进入文本框(2*3)+6
。现在我该如何告诉我的脚本计算这个值然后输出结果?如何计算用户在C#中输入的字符串?
回答
你可以使用Compute方法:
using System;
using System.Data;
class Program
{
static void Main()
{
var result = new DataTable().Compute("(2*3)+6", null);
Console.WriteLine(result);
}
}
打印:
12
当然不要指望能够计算出使用这种方法的任何复杂的功能。您仅限于basic arithmetic。
如果你想处理更复杂的表达式,你可以使用CodeDOM。
+1我不知道 – Robbie 2012-03-20 22:16:04
这会工作,但绝不是DataTable的设计目的。 – 2012-03-20 22:17:28
有这种方法没有以往的经验,所以我可能会如履薄冰这里,但文档指出'表达参数需要一个总function.' - 那么这将真正的工作? – 2012-03-20 22:17:42
可以使用System.Linq.Dynamic
库做到这一点:
`
static void Main(string[] args)
{
const string exp = "(A*B) + C";
var p0 = Expression.Parameter(typeof(int), "A");
var p1 = Expression.Parameter(typeof(int), "B");
var p2 = Expression.Parameter(typeof(int), "C");
var e = System.Linq.Dynamic.DynamicExpression.ParseLambda(new[] { p0, p1, p2 }, typeof(int), exp);
var result = e.Compile().DynamicInvoke(2, 3, 6);
Console.WriteLine(result);
Console.ReadKey();
}
`
你可以下载它here副本。
N.B.该字符串可能只是“(2 * 3)+ 6”,但是这种方法也可以将值传递给等式。
- 1. 如何计算用户在Python中输入的字符串中的字母..?
- 2. 如何在计算中使用用户输入的字符?
- 3. 计算字符串输入的字数
- 4. 计算字符串输入的长度
- 5. 字符串和用户输入的C++
- 6. C中计算器的读取字符串输入
- 7. 用户输入字符串后,程序不计算函数
- 8. 计算器输入是字符串
- 9. 在C++中使用用户输入进行字符串串联
- 10. 匹配用户输入并通过数字计算输入C++
- 11. C++如何将用户输入字符串拆分为多个字符串
- 12. 如何计算用户输入中字母的频率?
- 13. 如何在Javascript中搜索用户输入的字符串
- 14. 如何在java中使用扫描器类来水平输入一个输入来计算字符串输入
- 15. 用户字符串输入。计数字符
- 16. 计算用户生成的字符串中的特殊字符
- 17. 在C++代码,如何获取用户输入字符串中的文本
- 18. 如何将字符串输入到C++中的字符数组?
- 19. 如何验证用户在asp中输入字符串mvc4
- 20. 如何在字符串中存储用户输入?
- 21. 如何在程序中输入数据来计算输入的字符数?
- 22. 将字符串作为输入并计算字符串出现在字符串中的次数的函数
- 23. C++验证用户输入为字符或字符串
- 24. 用c计算字符串中字符的重复次数
- 25. 如何在C++中用空格输入长字符串?
- 26. 如何在C++中输入二维数组中的字符串?
- 27. 在C中处理字符串输入
- 28. 计算.txt输入文件中的字符串出现次数
- 29. 计算器中的输入字符串格式不正确
- 30. 如何让用户在C++中输入多行字符串数据?
如果要从头开始创建自己的解决方案,然后查找“逆波兰式” – 2012-03-20 22:14:37
调度场算法似乎是很常见的藏汉:有http://en.wikipedia.org/wiki/Shunting-yard_algorithm – flai 2012-03-20 22:15:23
大约有十几个关于SO的重复问题。 [1](http://stackoverflow.com/questions/355062/is-there-a-string-math-evaluator-in-net)[2](http://stackoverflow.com/questions/7727933/is-还有,任何 - 其他工具样ncalc可用换网发展)[3](http://stackoverflow.com/questions/3972854/c-sharp-parse-math-expression) – CodesInChaos 2012-03-20 22:32:01