是否可以将字符串表达式转换为布尔条件?c#将字符串表达式转换为布尔表达式
例如,我得到以下字符串:
var b = "32 < 45 && 32 > 20"
我想出来的这个创建bool
表达和调用它。字符串表示也是灵活的(使其更有趣),所以它允许||, &&,()
。
是否可以将字符串表达式转换为布尔条件?c#将字符串表达式转换为布尔表达式
例如,我得到以下字符串:
var b = "32 < 45 && 32 > 20"
我想出来的这个创建bool
表达和调用它。字符串表示也是灵活的(使其更有趣),所以它允许||, &&,()
。
我会使用.NET语言工具箱Irony。你可以用Irony构造一个简单的语法,然后将该字符串解析成可执行的命令。还有在这个tutorial,并在Expression Grammar Sample,它的一个很常见的请求的arthmetic语法的一个体面的例子)
我绝对建议使用合适的编译器,而不是正则表达式或滚你自己的方法 - 它会更如果您想要添加更多规则,则可扩展。
如果它跟所有的C#则表达式规则,然后编译成动态代码按http://www.west-wind.com/presentations/dynamiccode/dynamiccode.htm
那有多快?我想它很慢 – 2011-02-17 14:03:05
有CodePlex上看看Flee(快速轻巧表达式求值)。
我认为为这个字符串创建一个解释器不需要太长时间。
http://www.industriallogic.com/xp/refactoring/implicitLanguageWithInterpreter.html
在这里你可以找到有关的设计,可用于创建它的信息。
如果你正在处理相对简单的数学表达式,那么shunting-yard algorithm的一个简单的实现应该做的伎俩。
你可以看看JINT(JavaScript解释为.NET)http://jint.codeplex.com/
另请参阅[如何,可以-I-评估-AC-尖锐的表达,动态LQ = 1?(HTTP:// stackoverflow.com/questions/53844/how-can-i-evaluate-ac-sharp-expression-dynamically?lq=1) – nawfal 2013-12-19 18:47:43