是否可以將字符串表達式轉換爲布爾條件?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