Проверить текст для открытых фигурных скобок в тексте - PullRequest
0 голосов
/ 05 августа 2020

Как определить неправильные фигурные скобки в тексте? У меня есть текст с переменными, окруженными «{{» и «}}». И я хочу узнать, есть ли в тексте такой текст, как "{varname}} или {{varname or {{более одного слова}}" ". У меня есть документ, и мне нужен шаблон для поиска ошибок. Нет, у меня есть шаблон

string pattern = @"^[^{}]*(?:\{(?>[^{}]+|\{(?<Depth>)|\}(?<-Depth>))*(?(Depth)(?!))\}[^{}]*)*[^{}]*$";

TextSelection[] textSelection2 = wordDocument.FindAll(new Regex(pattern));

Но в результате у меня есть только текст, у которого нет проблем с фигурными скобками, и мне нужно иметь строки с неправильными фигурными скобками

1 Ответ

0 голосов
/ 06 августа 2020
private bool StringBalanced(string s)
            {
                //It will return true in the absence of any bracket. Change as needed.
                Dictionary<char, char> pairs = new Dictionary<char, char>
                {
                    { '{', '}' }
                };
                Stack<char> brackets = new Stack<char>();
                foreach (char c in s)
                {
                    if (pairs.ContainsKey(c))
                    {
                        brackets.Push(c);
                    }
                    else if (pairs.ContainsValue(c))
                    {
                        if (brackets.Count > 0)
                        {
                            if (pairs[brackets.Peek()] == c)
                            {
                                brackets.Pop();
                            }
                            else
                            {
                                return false;
                            }
                        }
                        else
                        {
                            return false;
                        }
                    }
                }
                return brackets.Count > 0 ? false : true;
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...