powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / TakeWhile и массив string
16 сообщений из 16, страница 1 из 1
TakeWhile и массив string
    #38282131
max112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: c#
1.
2.
3.
string[] blocks = text.Split('\n');
Regex rx = new Regex("[0-9]");
string[] blocks1 = blocks.TakeWhile(x => rx.Match(x).Success).ToArray();



Вот так не выдает ни одного элемента в массив. Текст - просто русский текст, с переносами и пробелами, есть искомые предложения с цифрами. Подскажите, что не так?
...
Рейтинг: 0 / 0
TakeWhile и массив string
    #38282135
max112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Насчет неучтенных переносов, так тоже не находит:
Regex rx = new Regex("[А-Яа-я]");
...
Рейтинг: 0 / 0
TakeWhile и массив string
    #38282161
max112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Протестируйте данный текст, у кого есть возможность. Какой-то ребус с этим TakeWhile, по ходу.
...
Рейтинг: 0 / 0
TakeWhile и массив string
    #38282175
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
max112, TakeWhile() вернет первые подряд идущие строки удовлетворяюшие условию. У тебя они разбросаны и значит тебе нужен метод Where().
...
Рейтинг: 0 / 0
TakeWhile и массив string
    #38282262
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
max112,

а зачем тут вообще linq?
...
Рейтинг: 0 / 0
TakeWhile и массив string
    #38282264
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно так:
Код: c#
1.
2.
3.
4.
var matches = regex.Matches(text);
foreach (Match m in matches)
{
}


Или так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
var match = regex.Match(text);
do
{
    if (match.Success)
{
}
}
while ((match = match.NextMatch()).Success);
...
Рейтинг: 0 / 0
TakeWhile и массив string
    #38282268
max112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Понятно, спасибо. Linq более компактен, стараюсь его чаще юзать.
...
Рейтинг: 0 / 0
TakeWhile и массив string
    #38282300
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
max112,

Извините, но в данном случае вы его крайне криво используете. Вместо того, чтобы получить все совпадения, вы разбиваете текст на элементы и проверяете каждый.
...
Рейтинг: 0 / 0
TakeWhile и массив string
    #38282302
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
var matches = regex.Matches(text).Select(x => ((Match)x).Value).ToArray();
...
Рейтинг: 0 / 0
TakeWhile и массив string
    #38282304
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь, вот так:
Код: c#
1.
var res = regex.Matches(text).Cast<Match>().Select(x => x.Value).ToArray();
...
Рейтинг: 0 / 0
TakeWhile и массив string
    #38282450
max112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lelouch, мне надо получить строки, в которых содержатся цифры, а не сами цифры.
...
Рейтинг: 0 / 0
TakeWhile и массив string
    #38282467
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
max112,

регулярку поправьте, ваш КО.
...
Рейтинг: 0 / 0
TakeWhile и массив string
    #38282476
max112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lelouch, а по-моему вариант с разбитием текста легче понять, чем усложненную регулярку и не менее сложную конструкцию из предыдущего кода. :)
...
Рейтинг: 0 / 0
TakeWhile и массив string
    #38282485
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
max112,

усложненная регулярка имеет вид:
^.*[0-9].*$
Она очень сложна да?)
...
Рейтинг: 0 / 0
TakeWhile и массив string
    #38282489
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch,

автори не менее сложную конструкцию из предыдущего кода. :)

Спасибо, посмеялся.

авторПонятно, спасибо. Linq более компактен, стараюсь его чаще юзать.

Эта "сложная" конструкция как бы тоже целиком и полностью к linq относится
...
Рейтинг: 0 / 0
TakeWhile и массив string
    #38282505
max112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я не говорю что она очень сложная, просто сложнее чем split('\n'), а если подобных 50 штук, на каждую лишних 10 секунд - уже дополнительных 10 минут надо, чтобы понять эту часть кода. А то что она к linq относится это плюс, я же не спорю.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / TakeWhile и массив string
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]