【发布时间】:2020-04-12 07:12:05
【问题描述】:
我有一种情况,我需要解析多个 n 个相关字段(不想评估):
string exp1 = "10";
string exp2 = "20";
string exp3= "exp1 + exp2 + 30";
string exp4 = "exp5 - exp3";
string exp5 = "exp3 / 10";
Dictionary<string,string> expressions = new Dictionary<string,string>();
expressions.Add("exp1", exp1);
expressions.Add("exp2", exp2);
expressions.Add("exp3", exp3);
expressions.Add("exp4", exp3);
expressions.Add("exp5", exp5);
现在我们要遍历所有表达式字段并用实际值解析表达式(也应该应用 Bodmas)。所以,解析后,我们希望下面作为输出:
exp1 = "10";
exp2 = "20";
exp3= "10 + 20 + 30";
exp4 = "((10 + 20 + 30 )/10) - (10+ 20 + 30)";
exp5 = "(10 + 29 + 30)/ 10";
我应该在这里使用什么数据结构来使用通用方式对其进行解析?会是二叉树、图表、表达式树吗?
【问题讨论】:
-
我会使用递归并使用字典而不是列表。
-
@Program :我不想评估,我只需要用实际值解析表达式。表达式之间有n级关系。
-
@MarkCiliaVincenti:是的,递归会起作用。另外,我已经更新了使用字典的问题。还有其他通用方法吗?
-
@MarkCiliaVincenti 递归在“exp4”处会出现问题,因为其中包含尚未评估的“exp5”。我的意思是当你点击“exp4”时你会做什么? 编辑如果您可以更改顺序以便“exp5”解析“exp4”,您可以按顺序解析它们
-
@styx:我无法更改顺序,因为我不知道在哪个表达式中我们可以有其他表达式。因为可以通过 UI 随时更改表达式。所以我们不能为订购做任何事情。这就是我问这个问题的原因和原因。
标签: c#