このような式を生成しようとしていますが、これは単なるサンプルです。
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);
ただし、上記のコードでは文字列が aslhs
でrhs
あり、演算子である場合でも>
、シート自体に式を適用する方法を理解できません。どの列にどの演算子が関連付けられているかを知る必要があるだけです。
個々の列名がありますが、それらの前に演算子がないため、たとえば、
+
別のケースでは前A
-
に。A
上記を解析する方法を教えてください。