我想在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