Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C解析过滤器字符串_C# - Fatal编程技术网

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规范。我将研究这些工具。