Парсинг данных c#

socrobotic

Client
Регистрация
14.02.2016
Сообщения
203
Благодарностей
86
Баллы
28
Всем привет, как обычно парсю данные, просто появилась неободимость получать рандомное значение а не первую спарсенную строчку.

Как получить например 3ю строчку?
upload_2017-6-21_6-5-54.png

На данный момент береться первая строчка:

upload_2017-6-21_6-6-35.png
 

copper12

Client
Регистрация
26.11.2016
Сообщения
1 111
Благодарностей
260
Баллы
63
Используйте экшен Обработка текста - Regex - Что брать - Одно совпадение - Random (см.скриншот)
 

Вложения

justhelen

Client
Регистрация
18.11.2009
Сообщения
267
Благодарностей
134
Баллы
43
Код:
var m = new Regex(@"регекс здесь").Match(Pars1);

List<String> found = new List<String>();

while (m.Success){
    found.Add(m.Value);
    m = m.NextMatch();
}

Random rnd = Global.Classes.rnd;

return found[rnd.Next(found.Count)];
 
Последнее редактирование:
  • Спасибо
Реакции: socrobotic

ZHAG

Client
Регистрация
01.05.2014
Сообщения
228
Благодарностей
220
Баллы
43
C#:
string a = @"asd
            asd1
            asd2
            asd3
            asd4";
List<string> list = new List<string>();
list.AddRange(Regex.Matches(a,@"asd.*").Cast<Match>().Select(x=>x.Value).ToList());//возьмем все что нашла регулярка и положим в список
return list[new Random().Next(list.Count)];//возьмем случайную строку из списка
Я для такой цели использую другой метод Regex.Matches, но в любом случае без System.Linq этот вопрос трудновато решить! Учи Linq!
 
  • Спасибо
Реакции: socrobotic

justhelen

Client
Регистрация
18.11.2009
Сообщения
267
Благодарностей
134
Баллы
43
C#:
string a = @"asd
            asd1
            asd2
            asd3
            asd4";
List<string> list = new List<string>();
list.AddRange(Regex.Matches(a,@"asd.*").Cast<Match>().Select(x=>x.Value).ToList());//возьмем все что нашла регулярка и положим в список
return list[new Random().Next(list.Count)];//возьмем случайную строку из списка
Я для такой цели использую другой метод Regex.Matches, но в любом случае без System.Linq этот вопрос трудновато решить! Учи Linq!
А чем это решение чисто практически отличается от моего? Реально интересно просто стало, потому что по сути ведь то же самое, только по-другому заносится в список. Может я чего не знаю.
 

ZHAG

Client
Регистрация
01.05.2014
Сообщения
228
Благодарностей
220
Баллы
43
А чем это решение чисто практически отличается от моего?
В твоем решении Regex отработает N раз в моем всего 1. Теперь представь себе если регулярка возвращает овер 100500 строк :D, сколько будет отрабатывать твой while?
Для решения поставленной задачи оба варианта приемлемы при условии что количество совпадений не стремится к бесконечности.
 

socrobotic

Client
Регистрация
14.02.2016
Сообщения
203
Благодарностей
86
Баллы
28
В твоем решении Regex отработает N раз в моем всего 1. Теперь представь себе если регулярка возвращает овер 100500 строк :D, сколько будет отрабатывать твой while?
Для решения поставленной задачи оба варианта приемлемы при условии что количество совпадений не стремится к бесконечности.
А чем это решение чисто практически отличается от моего? Реально интересно просто стало, потому что по сути ведь то же самое, только по-другому заносится в список. Может я чего не знаю.
спасибо очень помогли)))

все равно как то по своему это решила не помню точно как щас столько потоков запущено елси не забуду в след раз отпишусь по этому поводу
 

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
В твоем решении Regex отработает N раз в моем всего 1. Теперь представь себе если регулярка возвращает овер 100500 строк :D, сколько будет отрабатывать твой while?
Для решения поставленной задачи оба варианта приемлемы при условии что количество совпадений не стремится к бесконечности.
Сразу видно, что кто-то не знаком с перечислителями, а также с IEnumerator и методом MoveNext.
Вкратце могу сказать, что твой Regex.Matches внутри также работает через метод MoveNext, так что разницы нету.
 
  • Спасибо
Реакции: justhelen

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)