[英]operator precedence calculation and RegEx
我想寻求帮助以找出运算符优先级计算的逻辑..目前,我有这样的代码,它只能计算带有“ +”或“-”符号的表达式。
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。如何使第一个“ *”和“ /”符号计算?
如果您要以开始时的相同方式进行:
您必须根据具有不同符号优先级的时间来计算它,并且在每次计算之后,都要替换原始序列中的新值,然后使用较低优先级符号再次进行计算。
original := "100+50-2*5*3"
precedance := {*, /, +, -}
for each precedance => P
while there is a sub-calculation using P => C
C := first sub-calculation using P
compute C
replace C in original
enf for
end for
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.