/
jhayphal
/
CitReportDesigner
Обзор
Документация
Войти
/
jhayphal
/
CitReportDesigner
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
CitReport.IO/Parser/OptionsTokenizer.cs
66 строк
1 KB
Oleg Nazarenko
Рефакторинг.
23 фев 2023, 21:39
23 фев 2023, 21:39
c80085d
Код
Авторство
О чём код?
using System.Text; namespace CitReport.IO.Parser; public class OptionsTokenizer { private readonly StringBuilder builder = new(); private int position; public IEnumerable<string> GetTokens(string text) { position = 0; if (text == null) { yield break; } while (position < text.Length) { while (position < text.Length && char.IsWhiteSpace(text[position])) { ++position; } if (position >= text.Length) { yield break; } while (position < text.Length && text[position] != '(') { builder.Append(text[position++]); } var token = builder.ToString(); builder.Clear(); yield return token; int brackects = 1; while (++position < text.Length && brackects > 0) { if (text[position] == '(') { ++brackects; } else if (text[position] == ')') { --brackects; } if (brackects > 0) { builder.Append(text[position]); } } token = builder.ToString(); builder.Clear(); yield return token; } } }