c#解析包含条件的字符串,key=value
我给出了一个字符串,其中包含几个不同的数据组合 例如: 字符串数据=“(年龄=20,性别=男性)或(城市=纽约)”c#解析包含条件的字符串,key=value,c#,.net,string,parsing,formatting,C#,.net,String,Parsing,Formatting,我给出了一个字符串,其中包含几个不同的数据组合 例如: 字符串数据=“(年龄=20,性别=男性)或(城市=纽约)” 字符串数据1=“(职务=工程师,性别=女性)” 字符串数据2=“(foo=1或foo=2)&(bar=1)” 我需要解析这个字符串并从中创建结构,我必须将它计算为另一个对象的条件。如果对象具有这些属性,则执行某些操作,否则跳过等 实现这一点的最佳实践是什么 我应该使用antlr之类的解析器并从字符串中生成标记吗。等等 提醒:此字符串的创建方式有多种组合。但它是全部和/或。似乎您可能
字符串数据1=“(职务=工程师,性别=女性)”
字符串数据2=“(foo=1或foo=2)&(bar=1)” 我需要解析这个字符串并从中创建结构,我必须将它计算为另一个对象的条件。如果对象具有这些属性,则执行某些操作,否则跳过等 实现这一点的最佳实践是什么 我应该使用antlr之类的解析器并从字符串中生成标记吗。等等
提醒:此字符串的创建方式有多种组合。但它是全部和/或。似乎您可能希望使用正则表达式来实现这一点 阅读一下.NET中的正则表达式。以下是一些好文章:
当需要编写/测试正则表达式时,我强烈建议您使用RegExLib.com。我建议您看看正则表达式:Antlr是一个很好的工具,但您可能可以使用正则表达式来实现这一点。NET正则表达式引擎的一个优点是支持嵌套构造。看
而且。像ANTLR这样的东西可能会在这方面做得过火 一个简单的实现可能会很好地完成这项任务。如果示例非常简单,使用正则表达式可能会起作用,但很可能会导致无法维护的代码。使用其他方法进行解析似乎是个好主意
- 我想看一看-它主要关注于解析数学表达式,但它似乎是非常可定制的(您可以指定您的函数和常量),因此它也可以在您的场景中工作
- 如果这对于您的目的来说太复杂,您可以使用任何C#的“解析器生成器”。使用ANTLR是一个很好的选择——下面是一个示例,展示了如何开始编写类似于您的示例的内容
- 您还可以尝试使用F#,这是解决此类问题的一种很好的语言。参见Chris Smith的例子,其中显示了一个简单的数学计算器——在F#中处理解析表达式要比在C#中容易得多。在F#中,您也可以使用,这非常轻,但如果您不习惯F#,则可能有点难以遵循