我正在尝试生成一个可能是这样的公式,这只是一个示例,
A + B + C > D - A
现在,A、B、C、D 等是我将在内存中访问的工作表(如 excel 工作表)的列名。
我需要生成一个规则,就像上面一样A + B + C > D - A
,它将决定用户可以在单元格中添加什么样的值。
目前这就是我开始的方式:
string toValidate = "A + B + C > D + E - A";
string lhs = "", rhs = "";
string[] comparisonOperators = new string[] { "=", ">", "<", "<>", "!=" };
char[] arithmeticOperators = { '+', '-', '/', '*' };
toValidate = toValidate.Replace(@" ", "");
for (int i = 0; i < comparisonOperators.Length; i++)
{
if (toValidate.Contains(comparisonOperators[i]))
{
operatorIndex = toValidate.IndexOf(comparisonOperators[i]);
break;
}
}
lhs = toValidate.Substring(0, operatorIndex);
rhs = toValidate.Substring(operatorIndex + 1);
string[] columnLhsList = lhs.Split(arithmeticOperators);
string[] columnRhsList = rhs.Split(arithmeticOperators);
然而,即使我在上面的代码中有字符串lhs
,rhs
甚至我的运算符>
,我也无法理解如何在工作表本身上应用公式。我只需要知道哪个 Column 关联了哪个运算符。
因为我有单独的列名,但没有它们之前的运算符,例如,
+
A
-
在A
另一种情况下之前。
我如何解析上述内容请帮忙。