Вы должны войти, чтобы создавать сообщения и темы.

Обработчик события в foreach

Здравствуйте!
Есть такой блок кода(скриншот)

В массиве есть четыре строки(bs), которые проверяются в foreach и затем парсятся Regexом.
Меня интересует personastate
Когда я вывожу в textBox матчи из регекса, то мне просто выдает 4 цифры, которые записаны в одну строку(это нормально, personastate принимает только единичные цифровые значения).
У personastate есть значения от 0 до 8, и мне нужно сделать так, чтобы после каждого прогона bs через foreach, значение, которые мы получаем(от 0 до 8) прогонялось через if, и если значение bs в personastate "1", то добавить исходный bs(который проверяется из массива по ссылке, то есть одна из четырех строк) в textBox. Ну и соответственно провернуть все эти манипуляции с каждой из строк массива.
Буду очень благодарен за любые подсказки! 🙂

Ну дык ты всю логику уже расписал что надо сделать, в чём ступор то?

четыре цифры разбить посимвольно?


Комментарий модератора:
@anomal3, не забывайте здороваться!

Ступор в том, что foreach сразу выводит результат для каждого bs, а мне нужно, чтобы он обработал один bs, через if проверил его результат, если он по условия if подходит - закинул его в другой текстбокс, ну и соответственно так проделал с каждым bs. А в данном коде он просто моментально обрабатывает все bs и выводит их результат, лишая меня возможности проверить его через if

Цитата: noname от 04.12.2020, 14:35

Ступор в том, что foreach сразу выводит результат для каждого bs, а мне нужно, чтобы он обработал один bs, через if проверил его результат, если он по условия if подходит - закинул его в другой текстбокс, ну и соответственно так проделал с каждым bs. А в данном коде он просто моментально обрабатывает все bs и выводит их результат, лишая меня возможности проверить его через if

Тогда напишите свой блок кода в котором это происходит. 

У Вас на скриншоте сначала парсится bs а потом выводится этот bs, а происходит это потому что работает это в цикле foreach
И так же у Вас стоит textbBox1.Text += match. Что добавляет к строке bs

string line = "";
            using(WebClient wc = new WebClient())
            {
                line = wc.DownloadString("PATH");
                Match match = Regex.Match(line, "УСЛОВИЕ");
                textBox1.Text = match.Groups[2];
            }
            

Что Вы делаете в foreah? bs объявляете но не используете.

bs парсится с сайта? или из файла?

bs как раз парсится в DownloadString, если присмотрется внимательнее, то в конце к ссылке подставляется значение bs.

bs парсится из сайта. Запрос формируется исходя из содержимого bs, а вывод у запроса парсится регексом.

Допустим у меня 4 значения bs, значит на выходе при парсе я получаю 4 цифры, а мне нужно, чтобы было так:

Если bs(который изначально использовался при парсе) после парса выдал единицу, то вывести изначальный bs в TextBox.

В данной ситуации это не получается потому, что foreach парсит значения и не дает их обработать.

 

Цитата: noname от 04.12.2020, 16:09

bs как раз парсится в DownloadString, если присмотрется внимательнее, то в конце к ссылке подставляется значение bs.

bs парсится из сайта. Запрос формируется исходя из содержимого bs, а вывод у запроса парсится регексом.

Допустим у меня 4 значения bs, значит на выходе при парсе я получаю 4 цифры, а мне нужно, чтобы было так:

Если bs(который изначально использовался при парсе) после парса выдал единицу, то вывести изначальный bs в TextBox.

В данной ситуации это не получается потому, что foreach парсит значения и не дает их обработать.

 

Покажите что в файле c:\Users\w\Desktop\Ids.txt

Такое надо?

string[] bases = File.ReadAllLines(@"Ids.txt");
foreach (var bs in bases)
  {
     string line;
     using (WebClient wc = new WebClient())
       {
          line = wc.DownloadString($"http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=3952B005C92D822E45FBB2FF4223D694&steamids={bs}");
          Match match = Regex.Match(line, "\"avatarhash\":\"(.*?)\",\"personastate\":(.^*$?)");
          if (match.Groups[2].Value == "1") textBox1.Text = bs;
          else lPersSate.Text += bs + "\r";
        }
  }

 

Цитата: noname от 04.12.2020, 16:09

bs как раз парсится в DownloadString, если присмотрется внимательнее, то в конце к ссылке подставляется значение bs.

bs парсится из сайта. Запрос формируется исходя из содержимого bs, а вывод у запроса парсится регексом.

Допустим у меня 4 значения bs, значит на выходе при парсе я получаю 4 цифры, а мне нужно, чтобы было так:

Если bs(который изначально использовался при парсе) после парса выдал единицу, то вывести изначальный bs в TextBox.

В данной ситуации это не получается потому, что foreach парсит значения и не дает их обработать.

 

И Код похоже не Вы писали видимо. foreach это управляемый цикл

Для наглядности

ps это personastate у этого id


Комментарий модератора:
Я не могу править каждый скриншот за тобой.

Приветствую.
@anomal3, изучите, пожалуйста, видео — как оформлять свои комментарии (вверху страницы). Чтобы модераторам не пришлось править каждый ваш пост.
И ещё, неплохо было бы, прочесть и усвоить Правила форума (всё там же, вверху страницы).

Лучший способ помочь себе — помогать другим.