Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.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#解析包含条件的字符串,key=value_C#_.net_String_Parsing_Formatting - Fatal编程技术网

c#解析包含条件的字符串,key=value

c#解析包含条件的字符串,key=value,c#,.net,string,parsing,formatting,C#,.net,String,Parsing,Formatting,我给出了一个字符串,其中包含几个不同的数据组合 例如: 字符串数据=“(年龄=20,性别=男性)或(城市=纽约)” 字符串数据1=“(职务=工程师,性别=女性)” 字符串数据2=“(foo=1或foo=2)&(bar=1)” 我需要解析这个字符串并从中创建结构,我必须将它计算为另一个对象的条件。如果对象具有这些属性,则执行某些操作,否则跳过等 实现这一点的最佳实践是什么 我应该使用antlr之类的解析器并从字符串中生成标记吗。等等 提醒:此字符串的创建方式有多种组合。但它是全部和/或。似乎您可能

我给出了一个字符串,其中包含几个不同的数据组合

例如:

字符串数据=“(年龄=20,性别=男性)或(城市=纽约)”
字符串数据1=“(职务=工程师,性别=女性)”
字符串数据2=“(foo=1或foo=2)&(bar=1)”

我需要解析这个字符串并从中创建结构,我必须将它计算为另一个对象的条件。如果对象具有这些属性,则执行某些操作,否则跳过等

实现这一点的最佳实践是什么

我应该使用antlr之类的解析器并从字符串中生成标记吗。等等


提醒:此字符串的创建方式有多种组合。但它是全部和/或。

似乎您可能希望使用正则表达式来实现这一点

阅读一下.NET中的正则表达式。以下是一些好文章:


当需要编写/测试正则表达式时,我强烈建议您使用RegExLib.com。

我建议您看看正则表达式:

Antlr是一个很好的工具,但您可能可以使用正则表达式来实现这一点。NET正则表达式引擎的一个优点是支持嵌套构造。看


而且。

像ANTLR这样的东西可能会在这方面做得过火

一个简单的实现可能会很好地完成这项任务。

如果示例非常简单,使用正则表达式可能会起作用,但很可能会导致无法维护的代码。使用其他方法进行解析似乎是个好主意

  • 我想看一看-它主要关注于解析数学表达式,但它似乎是非常可定制的(您可以指定您的函数和常量),因此它也可以在您的场景中工作

  • 如果这对于您的目的来说太复杂,您可以使用任何C#的“解析器生成器”。使用ANTLR是一个很好的选择——下面是一个示例,展示了如何开始编写类似于您的示例的内容

  • 您还可以尝试使用F#,这是解决此类问题的一种很好的语言。参见Chris Smith的例子,其中显示了一个简单的数学计算器——在F#中处理解析表达式要比在C#中容易得多。在F#中,您也可以使用,这非常轻,但如果您不习惯F#,则可能有点难以遵循