是否有可能将字符串表达式转换成布尔条件?
例如,我得到以下字符串:
var b = "32 < 45 && 32 > 20"
我想创建一个bool
出来的这种表达和调用它。 字符串表示也很灵活(使它更好玩),因此它允许||, &&, ()
是否有可能将字符串表达式转换成布尔条件?
例如,我得到以下字符串:
var b = "32 < 45 && 32 > 20"
我想创建一个bool
出来的这种表达和调用它。 字符串表示也很灵活(使它更好玩),因此它允许||, &&, ()
我会用反讽的.NET语言包。 你可以构造一个简单的语法与反讽,然后解析字符串转换为可执行的命令。 有一个在这一个arthmetic语法体面的例子教程 ,并在表达式语法样品 ,它的一个很常见的请求;)
我用正确的编译器,而不是正则表达式或滚你自己的方法肯定建议 - 这将是更加可扩展的,如果你想添加更多的规则。
看看回避率 CodePlex上(快速轻巧表达式求值)。
如果它遵循所有的C#表达式规则然后编译为动态代码按http://www.west-wind.com/presentations/dynamiccode/dynamiccode.htm
如果你正在处理相对简单的数学表达式,然后直接实现的的调度场算法应该做的伎俩。
我觉得这个字符串创建一个翻译不会采取太长时间。
http://www.industriallogic.com/xp/refactoring/implicitLanguageWithInterpreter.html
在这里你可以找到有关的设计,可用于创建它的信息。
你可以看看JINT(JavaScript解释为.NET) http://jint.codeplex.com/
看看我的图书馆, 辎 。 这是使用一个.NET标准库调度场算法来评估布尔表达式。 你也可以实现自己的语法。