Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Jake432
1 / 1 / 1
Регистрация: 02.05.2017
Сообщений: 18
1

Выделить текст между элементами

21.06.2017, 12:04. Просмотров 902. Ответов 6
Метки нет (Все метки)

Доброго времени суток! Подскажите пожалуйста, есть string:
C#
1
2
3
4
5
6
7
[xxxx]
aaaaaa
[yyyyyyyy]
bbbbbbbbbb
[zzzzzz]
ccccc
[qqqqqqq]
Необходимо выделить элементы aaaaaa, bbbbbbbbbb, ccccc.

Думал как-то выделить текст между обратными квадратными скобками ]...[, но не получается сплитом и регулярные выражения побороть не могу.
System.ArgumentException произошло
HResult=0x80070057
Сообщение = выполняется разбор "\]...[\." - Набор [] без признака завершения.
Источник = System
C#
1
2
3
4
5
6
7
8
9
10
11
12
string result;
string pattern = @"\]...[";
Regex regex = new Regex(pattern);
Match match = regex.Match(result);
            while (match.Success)
            {
                
                richTextBox1.AppentText(match.Groups[1].Value);
 
                
                match = match.NextMatch();
            }
Заранее спасибо!
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.06.2017, 12:04
Ответы с готовыми решениями:

Выделить элементы массива в массив B, индексы которых являются элементами последовательности Фибоначчи
Дан линейный массив, содержащий N целых чисел. Выделить те элементы этого массива в массив B,...

Выделить текст из Bitmap
Здравствуйте, возникла проблема при работе с изображением. На изображение располагается некий...

Переход между элементами ListView
Здравствуйте. В программе при нажатии на Button должен происходить переход от одного элемента...

Обменять информационную часть между элементами
Чтобы в списке элементы а и б поменялись местами под заданным номером "N", т.е. если н=1 , то в...

Найти разность между минимальными элементами массивов
Даны целочисленные массивы X и Y с разным количеством элементов. Найти разность между минимальными...

6
kolorotur
Эксперт .NET
11537 / 9350 / 2381
Регистрация: 17.09.2011
Сообщений: 16,010
Завершенные тесты: 1
21.06.2017, 12:12 2
Лучший ответ Сообщение было отмечено kolorotur как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
IEnumerable<string> GetLines(string s)
{
    using (var reader = new StringReader(s))
    {
        string line;
        while ((line = reader.ReadLine()) != null)
            if (!line.StartsWith("[") && !line.EndsWith("]"))
                yield return line;
    }
}
0
Jake432
1 / 1 / 1
Регистрация: 02.05.2017
Сообщений: 18
21.06.2017, 12:29  [ТС] 3
C#
1
2
3
4
5
6
7
8
9
10
IEnumerable<string> GetLines(string s)
{
    using (var reader = new StringReader(s))
    {
        string line;
        while ((line = reader.ReadLine()) != null)
            if (!line.StartsWith("[") && !line.EndsWith("]"))
                yield return line;
    }
}

Сорри за глупый вопрос.
1)
Переменная GetLines объявлена, но ни разу не использована.
Надо только исправить StringReader(s), где s- моя переменная? Если да, то не работает...
0
kolorotur
Эксперт .NET
11537 / 9350 / 2381
Регистрация: 17.09.2011
Сообщений: 16,010
Завершенные тесты: 1
21.06.2017, 12:50 4
Цитата Сообщение от Jake432 Посмотреть сообщение
Надо только исправить StringReader(s), где s- моя переменная?
Нет, ничего исправлять не надо — просто вызывайте метод, передавая в него свою строку:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
string result = 
@"[xxxx]
aaaaaa
[yyyyyyyy]
bbbbbbbbbb
[zzzzzz]
ccccc
[qqqqqqq]";
 
foreach (var line in GetLines(result))
{
   richTextBox1.AppentText(line);
   richTextBox1.AppendText(Environment.NewLine);
}
1
Jake432
1 / 1 / 1
Регистрация: 02.05.2017
Сообщений: 18
21.06.2017, 14:00  [ТС] 5
Цитата Сообщение от kolorotur Посмотреть сообщение
Нет, ничего исправлять не надо — просто вызывайте метод, передавая в него свою строку:
Спасибо! Работает. А как можно абзацы вставить между элементами(не строчками), что бы текст не сливался?

Добавлено через 1 час 0 минут
Все, я решил. Теперь у меня следующая проблема. Появился string:
xxxxabcxxxx
xxxfghgxxx
xxxabchgfdxx
Мне надо что бы он показал только элементы в которых есть "abc", остальные убрал.
0
kolorotur
Эксперт .NET
11537 / 9350 / 2381
Регистрация: 17.09.2011
Сообщений: 16,010
Завершенные тесты: 1
21.06.2017, 14:43 6
Цитата Сообщение от Jake432 Посмотреть сообщение
Мне надо что бы он показал только элементы в которых есть "abc"
C#
1
2
3
4
5
foreach (var line in GetLines(result).Where(line => line.Contains("abc")))
{
   richTextBox1.AppentText(line);
   richTextBox1.AppendText(Environment.NewLine);
}
0
Jake432
1 / 1 / 1
Регистрация: 02.05.2017
Сообщений: 18
21.06.2017, 14:56  [ТС] 7
C#
1
2
3
4
5
foreach (var line in GetLines(result).Where(line => line.Contains("abc")))
{
   richTextBox1.AppentText(line);
   richTextBox1.AppendText(Environment.NewLine);
}
Сорри, неверно задачу обрисовал. Получается так:
xxxx
xabcx
xxxx

xxxx
xabcghsx
xxxx

xxxxx
xfsdgfdxx
xxxx
Мне надо на вывод только:
xxxx
xabcx
xxxx

xxxx
xabcghsx
xxxx
Разделитель получается '\n'. Сплит по абзацам сделал, а дальше не знаю как элементы коллекции выделить. Или может не через коллекцию, не знаю вообщем.
0
21.06.2017, 14:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.06.2017, 14:56

Произведение между максимальным и минимальным по модулю элементами
В одномерном массиве, состоящем из n вещественных элементов, вычислить:• сумму положительных...

Найти разность между минимальными элементами массивов
Даны целочисленные массивы X и Y с разным количеством элементов. Найти разность между минимальными...

Сумма между первым и последним нулевыми элементами массива
Добрый день! Моё задание: посчитать сумму элементов, расположенных между первым и последним...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru