我如何将每条条件语句分组在 if 括号内。假设我有来自我的 contenteditable div 的文本。这不仅仅是语法高亮,我将在后面的代码中使用换行文本进行处理。
text = if ( x==1 && (x>2 || (!x>2 || x<=0)) )
我希望它们相应地分组并存储在这样的数组中
condFragment[0]=('x==1 && (x>2 || (!x>2 || x<=0))');
condFragment[1]=('x==1');
condFragment[2]=('(x>2 || (!x>2 || x<=0))');
condFragment[3]=('x>2');
condFragment[4]=('(!x>2 || x<=0)');
condFragment[5]=('!x>2');
condFragment[6]=('x>2');
condFragment[7]=('x<=0');
由此:
<div id="board">
<div>int main(){</div>
<div></div>
<div>if(x==1 && !x>2)</div>
<div>statement;</div>
<div>while(!x>5){</div>
<div>statement;}</div>
<div>}</div>
</div>
这就是我想通过使用condFragment
内容来实现的目标
<div id="board">
<div>int main(){</div>
<div></div>
<div>
if(<span class="frag"><span class="frag">x==1</span> &&
<span class="frag">!<span class="frag">x>2</span></span></span>)
</div>
<div>statement;</div>
<div>while(!x>5){</div>
<div>statement;}</div>
<div>}</div>
</div>
更新
我基于以下解决这个问题的想法text
是:
- 搜索 && || !从左到右
- 如果找到一个得到 indexOF( && or || or !)
- 如果找到的 && 的左侧被括号包围,则将其从那里切片到 && 的索引
- 如果 && 的右侧是一个开放的括号,则在 && 之后将其切片,直到找到 2nd 的第一个)
但我怎么知道那些是我应该切片的地方?