【发布时间】:2015-09-14 12:25:58
【问题描述】:
我正在尝试在 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)
真
对于我上面的字符串,存在一个问题,即 then 条件包含另一个嵌套逻辑,我需要将其拆分为逻辑。我可以根据 "(" 和 ")" 拆分它,以便我能够存储各种表达式的结果,例如 if, then, else 和嵌套条件。
【问题讨论】:
-
如果您尝试编写自己的解析器,您的方法/架构可能有问题......您实际上想做什么?
-
如果 ( x111 > 0 ) then (( x111/ x222) >= 34 and ( x222 / x222)
-
只是好奇,但你可以试试
(?<=(?:if|then|else)\s*)(?:\((?>[^()]+|\((?<number>)|\)(?<-number>))*(?(number)(?!))\)|\w+)。但是,我认为您确实需要编写自己的解析器。 -
请不要让您的问题成为移动目标。请用您的编辑文本提出一个新问题。
标签: c# string parsing grammar rule-engine