很容易實現一個「計算器」來解析一個字符串(例如,2^3/2
)並計算操作結果。但是,有沒有一個圖書館能夠做到這一點?在您的應用程序如何評估由字符串表示的數學表達式?
回答
嵌入IronPython的,然後你可以問它來評估任意複雜的字符串
我覺得他們甚至擁有同樣的事情
爲了做到這一點,您將需要某種數學解析器。我之前使用過C# Expression Parser using RPN by DeepEddie,或者如果您使用的表達式的複雜性範圍更加有限,則可以創建自己的表達式。
不要讓它嚇倒你,它實際上很容易做出來。
它只是非常簡單的情況「容易」 –
大多數事情傾向於當它更簡單時更容易。 –
我只是說,編寫一個解析輸入字符串的計算器顯然很容易具有欺騙性。這實際上是一個不平凡的問題。如果你不相信我,試試吧。 –
結賬Reverse Polish notation。它在現代計算器中被廣泛使用
我不明白這是如何有用的。 OP正在尋找一個現有的庫,而不是尋求實現他自己的解析器(並因此重新發明輪子) –
但知道你正在尋找的東西的名稱可能會有所幫助。 –
您也可以使用JScript庫,儘管它已被棄用。不是說你應該,只是你可以。
我已經使用這個:
using System;
using System.CodeDom.Compiler;
using System.Reflection;
using Microsoft.JScript;
public class JScriptEvaluator
{
public int EvalToInteger(string statement)
{
string s = EvalToString(statement);
return int.Parse(s.ToString());
}
public double EvalToDouble(string statement)
{
string s = EvalToString(statement);
return double.Parse(s);
}
public string EvalToString(string statement)
{
object o = "-1";
try
{
o= EvalToObject(statement);
}
catch { o = "-1"; }
return o.ToString();
}
public object EvalToObject(string statement)
{
return _evaluatorType.InvokeMember(
"Eval",
BindingFlags.InvokeMethod,
null,
_evaluator,
new object[] { statement }
);
}
public JScriptEvaluator()
{
CodeDomProvider provider = new Microsoft.JScript.JScriptCodeProvider();
CompilerParameters parameters;
parameters = new CompilerParameters();
parameters.GenerateInMemory = true;
CompilerResults results;
results = provider.CompileAssemblyFromSource(parameters, _jscriptSource);
Assembly assembly = results.CompiledAssembly;
_evaluatorType = assembly.GetType("Evaluator.Evaluator");
_evaluator = Activator.CreateInstance(_evaluatorType);
}
private object _evaluator = null;
private Type _evaluatorType = null;
private readonly string _jscriptSource =
@"package Evaluator
{
class Evaluator
{
public function Eval(expr : String) : String
{
return eval(expr);
}
}
}";
}
- 1. 如何從J2ME中的字符串評估數學表達式
- 2. 如何評估(數學)字符串表達式,vb.net
- 3. 如何在java中評估字符串數學表達式
- 4. 評估數學表達式
- 5. 數學表達式評估
- 6. 數學表達式評估
- 7. 評估一個簡單的字符串數學表達式
- 8. 評估字符串中的數學表達式
- 9. VB.Net-評估字符串中的數學表達式
- 10. Python - 評估字符串內的數學表達式
- 11. 從一個字符串使用VB評估數學表達式
- 12. Java字符串和數學表達式評估器
- 13. 評估布爾字符串表達式?
- 14. 使用正則表達式分割字符串評估字符串中的數學表達式
- 15. 評估c中的數學表達式#
- 16. 如何防止sqlite將字符串評估爲數學表達式?
- 17. Java遞歸數學表達式評估
- 18. Mono.CSharp:評估數學表達式
- 19. 評估一個數學表達式(python)
- 20. 字典(字符串,字符串)無法評估表達式
- 21. 如何評估字符串中的表達式?
- 22. 如何評估字符串中的表達式?
- 23. 如何評估具有條件表達式的字符串vba
- 24. 評估數學表達式與正則表達式
- 25. 如何評估表達式?
- 26. Can Sass可以評估包含數學表達式的字符串嗎?
- 27. 字符串表達式將被評估爲數字
- 28. 如何使用eval()評估python字符串布爾表達式?
- 29. 從字符串評估數學表達式並將其插入到堆棧中
- 30. 以字符串形式給出的表達式的評估
你的意思是(2^3)/ 2或2 ^(3/2)? – Gumbo
它不會那麼容易,因爲編譯語言c#沒有eval函數(例如,不像perl) –
你的意思是'2除以3的冪除以2'或'2 XOR 3除以2'? – Earlz