我正在尝试在C#中拆分字符串,使其成为我的代码的逻辑。字符串是:
if ( x111 > 0 )
then (( x111/ x222) >= 34 and ( x222 / x222) <= 4500)
else ( if ( x333 equals 0)
then true else false)
我正在使用以下代码用于其他字符串,它工作正常:
string query = "if ( x111 > 0 ) then (x222 > 0 ) else true";
string result = query.Split(new string [] {"if", "then", "else" },StringSplitOptions.RemoveEmptyEntries);
输出:
(x111> 0)
(x222> 0)
真
对于我的上面的字符串,有一个问题是然后条件包含另一个嵌套逻辑,我需要将其拆分为一个逻辑。我可以根据“(”和“)”拆分它,以便我能够存储各种表达式的结果,例如 if,then,else 和嵌套条件。
答案 0 :(得分:4)
您正在尝试使用字符串操作构建解析器......这是一个坏主意,可能永远不会有效。
我建议你使用ANTLR,这是一个用来创建语法和解析器/词法分析器的工具。你应该试一试。有许多语言示例,包括C#,您可以将它们用作您自己的语言分析器的开头。