
This is the Title of the Book, eMatter Edition
Copyright © 2007 O’Reilly & Associates, Inc. All rights reserved.
Determining Where Characters or Strings Do Not Balance
|
619
11.4 Determining Where Characters or Strings
Do Not Balance
Problem
It is not uncommon to accidentally create strings that contain unbalanced parenthe-
ses. For example, a user might enter the following equation in your calculator
application:
(((a) + (b)) + c * d
This equation contains four ( characters while matching them with only three ) char-
acters. You cannot solve this equation, since the user did not supply the fourth
)
character. Likewise, if a user enters a regular expression, you might want to do a sim-
ple check to see that all the
(, {, [, and < characters match up to every other ), }, ],
and
> character.
In addition to determining whether the characters/strings/tags match, you should
know where the unbalanced character/string/tag exists in the string.
Solution
Use the various Check methods of the Balance class shown in Example 11-6 to deter-
mine whether and where the character/string is unbalanced.
Example 11-6. Balance class with overloaded Check methods
using System;
using System.Collections;
public class Balance
{
public Balance( ) {}
private Stack<int> bookMarks = new Stack<int>( );
public int Check(string source, char openChar, char closeChar)
{
return (Check(source.ToCharArray( ), openChar, closeChar));
}
public ...