richtextbox应用程序测试c#
richtextbox application test c#
我是 c# 的新手。我创建了一个表格。一个富文本框和一个按钮。
我有一个运算符列表:Sum、Subtract、Multi、Div.I 想要 运行 一个小的 richtextbox 测试。例如,在 richtextbox 中我写了一个文本(例如 Sum(1,2)),然后单击按钮。 return 结果(例如 3)打印在 richtextbox 中。
我的想法是使用字符串包含
foreach( var element in operatorlist)
{
string text=richtextbox.text;
if( text.contains(element)== true)
{
element(parameter1,parameter2);//something like this
}
}
我在右行遇到了两个问题。
我的第一个问题是如何从richtextbox文本中获取数学运算。有没有比我更好的方法?
我的第二个问题是,一旦我们知道了operator,如何将richtextbox中的两个参数分配给operator。
我不是要编码,我只是在寻找想法。如果您有好的想法并希望分享。
- 我认为这归结为个人风格。你的方式肯定会奏效,这对你来说太好了。我会这样做的方式是为枚举创建一个字符串字典。因此,例如,所述字典和枚举可能如下所示:
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);
然后您必须构建一些代码来切换运算符并执行正确的操作。甚至还有一种将字符串转换为枚举的方法,这样也可以。
- 看起来参数的格式一致,所以您只需创建一个简单的方法,按括号和逗号以及 returns 它找到的字符串进行拆分。
如果您需要更多解释,请告诉我。
您可以使用 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,"") ;
我是 c# 的新手。我创建了一个表格。一个富文本框和一个按钮。
我有一个运算符列表:Sum、Subtract、Multi、Div.I 想要 运行 一个小的 richtextbox 测试。例如,在 richtextbox 中我写了一个文本(例如 Sum(1,2)),然后单击按钮。 return 结果(例如 3)打印在 richtextbox 中。
我的想法是使用字符串包含
foreach( var element in operatorlist)
{
string text=richtextbox.text;
if( text.contains(element)== true)
{
element(parameter1,parameter2);//something like this
}
}
我在右行遇到了两个问题。
我的第一个问题是如何从richtextbox文本中获取数学运算。有没有比我更好的方法?
我的第二个问题是,一旦我们知道了operator,如何将richtextbox中的两个参数分配给operator。
我不是要编码,我只是在寻找想法。如果您有好的想法并希望分享。
- 我认为这归结为个人风格。你的方式肯定会奏效,这对你来说太好了。我会这样做的方式是为枚举创建一个字符串字典。因此,例如,所述字典和枚举可能如下所示:
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);
然后您必须构建一些代码来切换运算符并执行正确的操作。甚至还有一种将字符串转换为枚举的方法,这样也可以。
- 看起来参数的格式一致,所以您只需创建一个简单的方法,按括号和逗号以及 returns 它找到的字符串进行拆分。
如果您需要更多解释,请告诉我。
您可以使用 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,"") ;