Ich habe derzeit eine Windows Form eingerichtet, die einen mathematischen Ausdruck innerhalb einer RichTextBox verwendet, und sucht den Ausdruck für alle unsymmetrischen Klammern. Mein Formular besteht aus der RichTextBox und einer Schaltfläche mit der Aufschrift "Check Parens". Ich versuche auch mit einem Stapel nach unausgeglichenen Klammern zu suchen. Was ich will, ist irgendwie anzugeben, welche Klammern unausgeglichen sind. Ich möchte dies tun, indem Sie die Klammern innerhalb der RichTextBox hervorheben oder fetten. Gibt es eine Möglichkeit, dies mit dem Code zu tun, den ich gerade eingerichtet habe? Hier ist mein Code unten, und jedes konstruktive Feedback würde sehr geschätzt werden!Hervorhebung unsymmetrischer Klammern in RichTextBox C# Windows Forms
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;
}
}
Das funktionierte für mich, und es macht Sinn, wie Sie es getan haben. Vielen Dank! – HylianSith