Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 14.04.2018
Сообщений: 41
1
.NET 4.x

List работа со строками

25.04.2018, 22:27. Показов 542. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Проблема такого характера. Софт ищет на странице промокод(ы) каждые 10 секунд и добавляет их в List. Если такие же промокод(ы) уже там есть, то он их не добавляет. У меня почему-то не работает такая задумка. Ниже в коде я в textBox1 отобразил содержание List и там что-то определенно не то. Скрин прилагаю.
Поможете пофиксить?



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
            bool flag = true;
            while (flag = true)
            {
                HttpRequest Request = new HttpRequest();
                Request.UserAgent = GetUserAgent.GetRandomWindowsUserAgent();
                HttpResponse Response = Request.Get("https://vk.com/csgo"); // ссылка изменена, чтобы не палить страницу
                string st = Convert.ToString(Response);
                var result = Regex.Matches(st, @"Промокод: (.+?)</div>").Cast<Match>().Select(x => x.Groups[1].Value);
                int index = List.BaseList.IndexOf(string.Join("\r\n", result));
                if (index <= 0)
                {
                    List.BaseList.Add(string.Join("\r\n", result);
                    textBox2.Invoke((MethodInvoker)(delegate () {textBox2.Text = string.Join("\r\n", result);}));
                    textBox1.Invoke((MethodInvoker)(delegate () {textBox1.Text = List.BaseList.ToString(); }));
                }
                else
                {
 
                }
                Thread.Sleep(10 * 1000);
            }
Миниатюры
List работа со строками  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.04.2018, 22:27
Ответы с готовыми решениями:

Работа со строками.
помогите плз написать на с# программу на строки, со строками раньше не сталкивался...Заранее спс ...

Работа со строками
Что я делаю не так?( см. ошибку в коде Заодно вопрос - как инициализировать массивы строк типа...

Работа со строками
Всем привет. Помогите пожалуйста. Есть код..... Нужно сделать так, чтобы строки описанные ниже (они...

работа со строками
как разбить строку &quot;x y z OR x y z&quot; на 2 другие, чтобы в них было тока 'x y z' и 'x y z&quot;...

3
168 / 131 / 29
Регистрация: 16.02.2013
Сообщений: 867
25.04.2018, 22:40 2
HashSet<T> не подходит?
1
22 / 25 / 8
Регистрация: 17.09.2017
Сообщений: 61
26.04.2018, 00:07 3
C#
1
2
3
4
5
6
textBox1.Invoke((MethodInvoker)(delegate () { 
foreach(var item in List.BaseList) 
{
textBox1.Text += item.ToString();
}
}));
попробуй так
0
Эксперт .NET
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
26.04.2018, 17:53 4
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
using System;
using System.Threading;
using System.Threading.Tasks;
 
namespace WinForms_PromoParser
{
    internal class PromoAgent
    {
        private readonly string _url;
        private int _counter;
 
        public PromoAgent(string url)
        {
            _url = url;
        }
 
        public Task<string> GetPromoList(CancellationToken cancellation)
        {
            return Task.Run(() =>
            {
                int counter = Interlocked.Increment(ref _counter);
                // Здесь пишешь запросы к сайту вместо кода ниже
                try
                {
                    // имитируем задержку
                    Task.Delay(1200, cancellation).Wait(cancellation);
                }
                catch (OperationCanceledException)
                {
                    // ignored
                }
                // _url - ссыла на сайт
                return $"<PROMO_{counter}/> <PROMO_{counter + 1}/> <PROMO_{counter + 2}/>";
            }, cancellation);
        }
    }
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
using System.Collections.Generic;
 
namespace WinForms_PromoParser
{
    public class PromoParser
    {
        public IEnumerable<string> Parse(string input)
        {
            return input.Split(' ');
 
            //return Regex.Matches(input, @"Промокод: (.+?)</div>").Cast<Match>().Select(x => x.Groups[1].Value);
        }
    }
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
using System;
using System.Collections.Generic;
using System.Threading;
using System.Windows.Forms;
 
namespace WinForms_PromoParser
{
    public partial class Form1 : Form
    {
        private readonly PromoAgent _agent;
        private readonly PromoParser _parser;
        private readonly HashSet<string> _promoCodes;
 
        private volatile bool _flag = true;
 
        private readonly CancellationTokenSource _cts;
 
        public Form1()
        {
            InitializeComponent();
 
            _agent = new PromoAgent("https://vk.com/csgo");
            _parser = new PromoParser();
 
            _promoCodes = new HashSet<string>();
 
            _cts = new CancellationTokenSource();
        }
 
        private async void Form1_Load(object sender, EventArgs e)
        {
            while (_flag)
            {
                string promoRaw = await _agent.GetPromoList(_cts.Token);
                var promoValues = _parser.Parse(promoRaw);
                var newPromoCodes = new HashSet<string>(promoValues);
 
                // удалить все элементы из newPromoCodes, которые уже есть в _promoCodes
                newPromoCodes.ExceptWith(_promoCodes); 
 
                foreach (string promo in newPromoCodes)
                {
                    _promoCodes.Add(promo);
 
                    listBox.Items.Add(promo);
                }
            }
 
            _cts.Dispose();
        }
 
        // Происходит, когда закрыли окно.
        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            _flag = false;
            _cts.Cancel(); // Отменяем операции в Task(ах)
        }
    }
}
Добавлено через 4 часа 0 минут
Упс, поправил ошибку, которая на данном примере, да и на любом другом не привела бы к ошибке, но всё-таки, как-то не хотелось бы её оставлять.
Я про
C#
1
int counter = Interlocked.Increment(ref _counter);
1
26.04.2018, 17:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.04.2018, 17:53
Помогаю со студенческими работами здесь

Работа со строками
Доброго времени суток! Как выполнить разбитие строки на слова, выбрать самые встречающиеся и...

работа со строками
В заданном тексте с общепринятой пунктуацией програма должна найти слова, которые начинаются и...

Работа со строками
Недавно начал изучать C#... Не могу написать одну задачку... Дана строка, в которой содержится...

Работа со строками в файле
помогите пожалуйста с программкой к примеру имеется простой txt файл с такими данными ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru