C# C解析过滤器字符串
我需要解析以下字符串C# C解析过滤器字符串,c#,C#,我需要解析以下字符串 var filter = "username eq \"john.smith\"" 得到 var leftPart = "username" var operator = "eq" var rightPart = "john.smith" 最好的方法是什么 我需要解析复杂的查询,比如 filter=userType eq "Employee" and emails.type eq "work" 是的,我研究了字符串拆分,正则表达式,按字符迭代。有图书馆做这些事情吗?我
var filter = "username eq \"john.smith\""
得到
var leftPart = "username"
var operator = "eq"
var rightPart = "john.smith"
最好的方法是什么
我需要解析复杂的查询,比如
filter=userType eq "Employee" and emails.type eq "work"
是的,我研究了字符串拆分,正则表达式,按字符迭代。有图书馆做这些事情吗?我正在寻找一个复杂的过滤器查询解析。我研究了Antlr,但不幸的是,我无法让它运行.net core+VS2017
String[] substrings = filter.Split(' ');
leftPart = substrings[0] ...
并按照上面提到的方法移除右侧部分
我需要解析复杂的查询
呜呜小子,你打开一罐虫子了吗
如果你幸运的话,你真正需要的只是传递到其他地方的令牌来获得实际的过滤器,在这种情况下,在Google或NuGet中搜索C lexer或令牌发生器应该会为你提供相当简单的解决方案,可以随时使用
如果您确实需要自己实现这些令牌的过滤器,那么您需要更深入地研究。理想情况下,您使用的是某种众所周知的语法,即:用于弹性搜索或parse.com的过滤器,您可以使用现有的解析器。但如果没有,仍然有一些工具可以帮助你。是其中之一,它有一个你可以使用的。Net还具有一些对的内置支持
但最重要的是避免自己从头开始编写代码。如果你真的在处理复杂的查询,那么现在花点时间学习这些东西从长远来看会让你省去很多痛苦 您可以这样手动执行:
var filter = "username eq \"john.smith\"";
var parts = filter.Split(" \"\\".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
var leftPart = parts[0];
var oper = parts[1];
var rightPart = parts[2];
按空格分割并移除特殊字符,仅此而已:\characters是字符串的一部分,还是您包含的一些东西,以便我们看到引号?tnx对于建议,我期待着实现SCIM规范。我将研究这些工具。