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

Поиск текста между двумя словами или набором символов

01.04.2020, 18:06. Показов 2999. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется текст. Мне нужно в отдельную переменную string поместить текст заключенный между двумя словами или набором символов. Т.е. задать два слова или отрезок из текста и найти сам текст между этими двумя заданными текстами.
Например, дан текст:
string TEXT = "<a class="btn_green" style="margin-right:20px;" href="https://thelastgame.ru/download/RimWorld.torrent" >Скачать торрент</a>"

Ввести первое слово: ""margin-right:20px;" href=""
Ввести второе слово: "" >Скачать торрент"

И получить результат: "https://thelastgame.ru/download/RimWorld.torrent "


"<a class="btn_green" style="margin-right:20px;" href="https://thelastgame.ru/download/RimWorld.torrent" >Скачать торрент</a>"


Я уже пытался написать код, но он не работал, если в ключевых словах, по которым находилось слово, находились ковычки(").

Может у кого получиться доработать или исправить этот код:

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
string GetText(string AllText, string SymbolLeft, string SymbolRight)
        {
            bool SearchL = false;
            bool SearchR = false;
            for(int L = 0; L <= AllText.Length; L++)
            {
                if (AllText.Substring(L, SymbolLeft.Length) == SymbolLeft)
                {
                    SearchL = true;
                    for (int R = L; R <= AllText.Length; R++)
                    {
                        if (AllText.Substring(R, SymbolRight.Length) == SymbolRight)
                        {
                            SearchR = true;
                            return AllText.Substring(L + SymbolLeft.Length, R - L - SymbolLeft.Length);
                        }
                        if (SearchR)
                            break;
                    }
                }
                if (SearchL)
                    break;
            }
            return "Нет результатов по поиску: " + "\"" + SymbolLeft + "\"" + " и " +"\""+SymbolRight + "\"";
        }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.04.2020, 18:06
Ответы с готовыми решениями:

Отобразить часть текста между двумя словами(наборов символов)
Есть такой ответ после GET-запроса с xNet Как вытащить &quot;123456789&quot;, &quot;Вася&quot;, &quot;Пупкин&quot;? Данные могут быть совершенно разной...

Поиск текста в файле между двумя данными словами
Привет всем. Подскажитье, как можно найти текст (неизвезный) между двух извесных слов в файле? Например: вася/давно.курит - Мы знаем...

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

9
 Аватар для Bring
133 / 53 / 43
Регистрация: 09.05.2015
Сообщений: 565
01.04.2020, 18:51
Если ты пытаешься парсить что-то, то на С# есть достаточно библиотек, чтобы получать атрибуты html эл-ов через css или javascript запросы. Например в твоем случае:


JavaScript
1
document.querySelector(" ~Тут еще нужно что то вроде ид родительского эл-та~ .btn_green").getAttribute("href");
Добавлено через 11 минут
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
namespace for_testing_shit
{
    class Program
    {
        static string GetText(string AllText, string SymbolLeft, string SymbolRight="")
        {
            AllText = AllText.Substring(AllText.IndexOf(SymbolLeft));
            AllText = AllText.Replace(SymbolLeft, "");
            AllText = AllText.Substring(0, AllText.IndexOf(SymbolRight) - 1);
 
            return AllText;
        }
 
        static void Main()
        {
            string text = "< a class='btn_green' style='margin-right:20px;' href='https://thelastgame.ru/download/RimWorld.torrent'>Скачать торрент</a>";
            Console.WriteLine(GetText(text, "style='margin-right:20px;' href='", ">Скачать торрент</a>"));
        }
0
0 / 0 / 1
Регистрация: 28.10.2018
Сообщений: 45
01.04.2020, 22:45  [ТС]
Bring, да, я пытаюсь парсить сайт, чтобы получить ссылку, и я знаю, что есть специальная библиотека HtmlAgilityPack , но я никак не могу с ней подружиться
И да, ваш код работает отменно, но в моей программе кое-что иное:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private void button1_Click(object sender, EventArgs e)
        {
           
            HtmlWeb web = new HtmlWeb();
            HtmlAgilityPack.HtmlDocument doc = web.Load("https://thelastgame.ru/rimworld/");
 
            label1.Text = GetText3(doc.Text, "style='margin-right:20px;' href='", ">Скачать торрент</a>");
        }
 
        static string GetText3(string AllText, string SymbolLeft, string SymbolRight = "")
        {
            AllText = AllText.Substring(AllText.IndexOf(SymbolLeft));
            AllText = AllText.Replace(SymbolLeft, "");
            AllText = AllText.Substring(0, AllText.IndexOf(SymbolRight) - 1);
 
            return AllText;
        }
0
 Аватар для Bring
133 / 53 / 43
Регистрация: 09.05.2015
Сообщений: 565
02.04.2020, 10:51
Цитата Сообщение от _iFoR_ Посмотреть сообщение
я никак не могу с ней подружиться
Скиньте мне полную ссылку где в html коде присутствует ссылка которая вам нужна.
0
 Аватар для Kazbek17
1484 / 939 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
02.04.2020, 11:19
_iFoR_,
C#
1
2
3
            HtmlAgilityPack.HtmlWeb web = new HtmlAgilityPack.HtmlWeb();
            HtmlAgilityPack.HtmlDocument html = web.Load("https://thelastgame.ru/rimworld/");
            var href = html.DocumentNode.SelectSingleNode("//a[@class='btn_green']").Attributes["href"].Value;
0
0 / 0 / 1
Регистрация: 28.10.2018
Сообщений: 45
02.04.2020, 12:02  [ТС]
Bring,
Вложения
Тип файла: docx HTML.docx (34.0 Кб, 2 просмотров)
0
0 / 0 / 1
Регистрация: 28.10.2018
Сообщений: 45
02.04.2020, 12:05  [ТС]
Kazbek17, Где можно найти описание на русском всех вот этих приблуд по типу //a[@class='btn_green'] или "href"

Очень было бы хорошо найти подробное описание
0
 Аватар для Kazbek17
1484 / 939 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
02.04.2020, 12:08
Лучший ответ Сообщение было отмечено _iFoR_ как решение

Решение

_iFoR_,
C#
1
string TEXT = "<a class="btn_green" style="margin-right:20px;" href="https://thelastgame.ru/download/RimWorld.torrent" >Скачать торрент</a>"
где // - это <
где @ - это значит что ищем все совпадение по class='btn_green' ну а href это атрибут как видно.
0
0 / 0 / 1
Регистрация: 28.10.2018
Сообщений: 45
02.04.2020, 12:13  [ТС]
Kazbek17, Хорошо, я понял, а если мне нужно будет расширить свои знания в этой области, не буду же я писать постоянно на форум и дожидаться ответа) Может скините сайт или гайд на русском, где можно почерпнуть знания в этой сфере?
0
 Аватар для Kazbek17
1484 / 939 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
02.04.2020, 12:16
Лучший ответ Сообщение было отмечено _iFoR_ как решение

Решение

_iFoR_, На счет русского я хз но есть на англ.
https://html-agility-pack.net/documentation
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.04.2020, 12:16
Помогаю со студенческими работами здесь

Копирование текста между двумя словами
И снова здравствуйте. public void GetText(string sSource, string sBegin, string sEnd) //функция поиска и вырезания текста { ...

Удаление текста между двумя словами
Добрый день! Подскажите, пожалуйста, как в .doc удалить все между словами &quot;слово1&quot; и &quot;слово2&quot;? Добавлено через 15...

Удалить пробелы, стоящие между первым и вторым словами, а также между двумя последними словами
Задание: Удалить пробелы, стоящие между первым и вторым словами, а также между двумя последними словами.

Удалить пробелы, стоящие между первым вторым словами, а также между двумя последними словами
Удалить пробелы, стоящие между первым вторым словами, а также между двумя последними словами, на паскале

Из заданного текста удалить последовательность символов между двумя апострофами
Из заданного текста удалить последовательность символов, расположенных между двумя апострофами. Помогите пожалуйста


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
BOINC: 22 года — и всё ещё работает
Programma_Boinc 12.03.2026
BOINC: 22 года — и всё ещё работает Дэвид Андерсон написал ретроспективу. Кратко: в 2001 году он ушёл из United Devices, где был CTO, и за несколько месяцев написал ядро BOINC — клиент, сервер,. . .
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru