我正在编写一个 C# 程序,它按以下格式执行一些过滤表达式(条件由二元运算 AND 和 OR 连接)
Name==Me && Age>18 || City== NewYork
有一个标记器可以
{Name, ==, Me , &&, Age, >, 18, ||, City, ==, NewYork}.
之后过滤逻辑将创建一个过滤器。
问题:我想对分词器处的标记数量进行一级验证。但我无法弄清楚令牌的数量是多少。
if(!IsValidCount(tokens.Count)) return false;
IsValidCount() 内部的逻辑是什么?
这可能比 C# 更数学,任何帮助表示赞赏
每个条件必须包含 3 个标记(2 个字段 + 1 个比较器)。此外,对于每个附加条件,我们必须添加一个二元运算(AND/OR)来分隔它们(使其总共有 4 个标记)。
因此,有效的分词器将包含以下数量的标记:
3 + 4 + 4 + 4 ...
因此,您可以使用以下公式验证令牌数量是否有效:
string tokenizer = "{Name, ==, Me , &&, Age, >, 18, ||, City, ==, NewYork}";
var tokens = tokenizer.Split(',');
if (tokens.Length % 4 == 3)
{
//valid
}
else
{
//not valid
}
您可以更严格地检查每四个令牌是否确实是一个二元运算,但这由您决定。我希望我有帮助
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句