【发布时间】:2016-10-07 16:19:13
【问题描述】:
我目前设置了一个 Windows 窗体,它在 RichTextBox 中获取一个数学表达式,并在表达式中搜索任何不平衡的括号。我的表单由 RichTextBox 和一个显示“Check Parens”的按钮组成。我也在尝试使用堆栈检查不平衡的括号。我想要的是以某种方式指出哪些括号是不平衡的。我想通过突出显示或加粗 RichTextBox 中的括号来做到这一点。有没有办法用我现在设置的代码来做到这一点?下面是我的代码,如果有任何建设性的反馈,我们将不胜感激!
public partial class checkParentheses : Form
{
const char leftParens = '(';
const char rightParens = ')';
public checkParentheses()
{
InitializeComponent();
}
public void checkParensButton_Click(object sender, EventArgs e)
{
int value;
checkBalancedParens(mathEquation.Text, out value);
}
bool checkBalancedParens(string expression, out int error)
{
var parens = new Stack<int>(expression.Length);//Create stack
error = -1; //Error at -1
for (int i = 0; i < expression.Length; i++)//Check for unbalanced Parentheses
{
char p = expression[i];
if (p == leftParens)//if p finds left parens
{
parens.Push(i);//push to top of stack
}
else if (p == rightParens)//if p finds right parens
{
if (parens.Count == 0)//if stack has zero items
{
error = i + 1;
return false;
}
parens.Pop();//Returns to top of stack
}
}
if (parens.Count > 0)//if stack has more than 0 items
{
error = parens.Peek() + 1; //Peek at top of stack
MessageBox.Show("Unbalanced");
return false;
}
MessageBox.Show("Balanced");//Otherwise, expression is balanced
return true;
}
}
【问题讨论】:
标签: c# winforms stack highlight parentheses