@Anton2001

Как правильно парсить текс в таких условиях?

Есть пример текст
куча текста , с разными знаками и символами {/.;sas slovo ,dasuwjqaas} и ешё большая куча всякого разного

Как мне найти slovo и спарсить всё внутри ближайших скобок чтоб получилось: {/.;sas slovo ,dasuwjqaas}
Интересно есть ли способ без регулярок так как с ними так и не научился работать
  • Вопрос задан
  • 83 просмотра
Решения вопроса 1
@oleg_ods
Строка это массив символов.

1. С помощью метода IndexOf() ищем первое вхождение символов ‘{‘ и ‘}’
2. С помощью метода SubString() сохраняем текст между найденными индексами.
3. Возвращаемся к пункту 1, но поиск начинаем с символа идущего после ‘}’.
4. Повторяем пока один из методов IndexOf() не вернет -1.

А вообще для решения данной задачи лучше покурить регулярки.

Если лень

Рефакторить и рефакторить, но работает =)

private static List<string> ParseString(string input)
        {
            List<string> result = new List<string>();

            int openIndex = input.IndexOf('{');
            int closeIndex = input.IndexOf('}');

            while (openIndex != -1 && closeIndex != -1)
            {
                result.Add(input.Substring(openIndex, closeIndex - openIndex + 1));
                
                input = input.Substring(closeIndex + 1);

                openIndex = input.IndexOf('{');
                closeIndex = input.IndexOf('}');
            }

            return result;
        }


+ вариант через регулярку Взято отсюда

private static List<string> ParseStringRegex(string input)
        {
            Regex regex = new Regex(@"{([\s\S]+?)}", RegexOptions.Compiled | RegexOptions.IgnoreCase);

            var matches = regex.Matches(input);

            return matches.Select(m => m.Value).ToList();
        }

Ответ написан
Пригласить эксперта
Ответы на вопрос 1
freeExec
@freeExec
Участник OpenStreetMap
1. найти слово
2. найти скобку перед ним
3. найти скобку после
4. вырезать текст между ними.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы