我对c#很新。我创建了一个表单。一个richtextbox和一个按钮。
我有一个运算符列表:Sum,Subtract,Multi,Div。我想运行一个小的richtextbox测试。例如,在richtextbox中我写了一个文本(例如Sum(1,2)),然后单击按钮。返回结果(例如3)在richtextbox中打印。
我的想法是使用字符串包含
foreach( var element in operatorlist)
{
string text=richtextbox.text;
if( text.contains(element)== true)
{
element(parameter1,parameter2);//something like this
}
}
我在右排遇到了两个问题。
我的第一个问题是如何从richtextbox文本中获取数学运算。有没有比我更好的方式?
我的第二个问题是,一旦我们知道了运算符,如何将richtextbox中的两个参数分配给运算符。
我不是要求编码,我只是在寻找想法。如果你有一个好主意并希望分享。
答案 0 :(得分:1)
您可以使用 DataTable.Compute 函数评估表达式:
int p1 = 1 ; string s1 = p1.ToString() ;
int p2 = 2 ; string s2 = p2.ToString() ;
int p3 = 3 ; string s3 = p3.ToString() ;
// Compute (p1+p2)*p3 ==> 9
int result = new DataTable().Compute( "("+s1+"+"+s2+")*"+s3+")","") ;
或直接:
string expression = "(1+2)*3" ;
int result = new DataTable().Compute(expression,"") ;
答案 1 :(得分:0)
enum Operator { Addition = 0, Subtraction = 1, Multiplication = 2, Division = 3, etc};
var operatorDictionary = new Dictionary<string, Operator>()
{
{"Addition", Operator.Addition},
{"Subtraction", Operator.Subtraction},
etc...
};
然后获得你想要的价值
Operator operation;
operatorDictionary.TryGetValue(string operationString, out operation);
然后你必须构建一些代码来切换操作符并执行正确的操作。甚至有一种方法可以将字符串转换为枚举,这样也可以。
如果您需要更多解释,请告诉我。