В настоящее время у меня есть настройка Windows Form, которая принимает математическое выражение внутри RichTextBox и ищет выражение для любых несбалансированных круглых скобок. Моя форма состоит из RichTextBox и кнопки с надписью «Check Parens». Я также пытаюсь проверить несбалансированные круглые скобки, используя стек. Я хочу, чтобы как-то указать, какие скобки не сбалансированы. Я хотел бы сделать это, выделив или выделив круглые скобки внутри RichTextBox. Есть ли способ сделать это с кодом, который я установил прямо сейчас? Вот мой код ниже, и любая конструктивная обратная связь будет высоко оценена!Выделение неуравновешенных скобок в RichTextBox C# Формы Windows
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;
}
}
Это сработало для меня, и имеет смысл, как вы это сделали. Спасибо! – HylianSith