繁体   English   中英

运算符优先级计算和RegEx

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM