【发布时间】:2014-01-30 10:26:34
【问题描述】:
我想寻求帮助以找出运算符优先级计算的逻辑.. 目前我有这样的代码,它只能计算带有 "+" 或 "-" 符号的表达式。
string s = "100 + 50 -2*5*3";
string[] ss = new string[20];
ss = Regex.Split(s, "\\+|-|\\*");
MatchCollection sig = Regex.Matches(s, "\\+|-|\\*");
int x = int.Parse(ss[0]);
for (int i = 1; i < ss.Length; i++)
{
if (sig[i - 1].ToString() == "+")
x += int.Parse(ss[i]);
else if (sig[i - 1].ToString() == "-")
x -= int.Parse(ss[i]);
}
label1.Text = x.ToString();
所以现在在计算表达式时 100 + 50 - 2 * 5 * 3 我得到 148。 我怎样才能使计算出 "*" 和 "/" 符号?
【问题讨论】:
-
这是一个常见问题。在 Stackoverflow 上或一般在网络上进行一些研究和搜索,应该会找到很多关于处理运算符优先级的文章。您还可以查找有关“解析”表达式的文章。 Krzysztof 使用 Reverse Polish 的想法很好。
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
标签: c# regex calculator operator-precedence