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

Изменение строки

13.08.2022, 12:31. Показов 903. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть строка (фото без синей обводки)
Нужно сделать так чтобы было по примеру с синей обводкой

Изначально после парсинга получаю лист листов в которых хранятся отдельные занятия по расписанию (Каждый лист отдельный день, и в каждом хранящемся там листе отдельные пары)
Далее для нужны перевожу его в строку и не могу правильно обработать выходную строку
Код парсинга ниже
C#
1
2
3
4
5
6
7
8
9
10
11
12
List<List<string>> table = Enumerable.Range(1, days)
            .Select(i => cells
                .Where(item => item.Descendants()
                .Where(n => n.HasClass("lw_" + i)).Count() > 0)
                .Select(item =>
                {
                    var arr = item.InnerText
                     .Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries)
                     .Where(x => !string.IsNullOrWhiteSpace(x))
                     .Select(item => item.Trim());
                    return string.Join("\n", arr);
                }).ToList()).ToList();
Как можно обработать строку так чтобы получить результат как на картинке с правками?
Миниатюры
Изменение строки   Изменение строки  
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.08.2022, 12:31
Ответы с готовыми решениями:

Изменение строки
Здравствуйте! Предположим у меня есть 3 переменные типа стринг - A = 255 B = 255 C = 255 А также есть переменная типа...

Изменение шрифта у строки
Никак не могу понять как сделать чтоб пользователь вводил неформатированный текст в TextBox а затем к этой строке применить определенный...

Изменение строки посимвольно
Каким образом можно изменить отдельный символ в строке? Раньше изучал С++,там проблемы не было.Но в C# индексатор класса string позволяет...

5
 Аватар для samana
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
13.08.2022, 13:14
chukaz, Может в item.InnerText находятся не совсем те строки, которые ожидаются?
Можете просто вывести их в консоль и скопировать результат сюда? Потому что сложно правильно обработать строку, которая неизвестно как выглядит.
0
1 / 1 / 0
Регистрация: 31.12.2020
Сообщений: 86
13.08.2022, 14:11  [ТС]
samana, вывод в консоли
Миниатюры
Изменение строки  
0
126 / 94 / 34
Регистрация: 24.06.2022
Сообщений: 253
13.08.2022, 14:47
chukaz, вы хоть объясните что вы парсите, непонятно же
предыдущая тема
Парсинг таблицы HTML


по картинкам непонятно что вам нужно.


Цитата Сообщение от chukaz Посмотреть сообщение
чтобы получить результат как на картинке с правками
что делают эти стрелочки ? )


код можно чуть сократить

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
   var dataTable = doc.DocumentNode.SelectSingleNode("//table");
   var cells = dataTable.SelectNodes("//div[contains(@class, 'lw_')]").ToArray();
   int days = 6;
 
        List<List<string>> table = Enumerable.Range(1, days)
            .Select(i => cells
            .Where(n => n.HasClass("lw_" + i))
                .Select(item =>
             {
                 var arr = item.InnerText
                  .Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries)
                 .Where(x => !string.IsNullOrWhiteSpace(x))
                 .Select(item => item.Trim());
                 return string.Join("\n", arr);
             })
            .ToList())
          .ToList();
0
1 / 1 / 0
Регистрация: 31.12.2020
Сообщений: 86
13.08.2022, 14:50  [ТС]
паршу расписание пар
ниже прилагаю то что получаю по итогу после парсинга (отсылаю через бота в ВК)
и то как выглядит это на сайте

по итогу я получаю текст смешанный, кабинет в котором проходит пара либо сьезжает вниз, либо находиться в притык к тексту, а нужно чтобы он находился снизу нужного кабинета как я это изобразил стрелочками
Миниатюры
Изменение строки   Изменение строки  
0
126 / 94 / 34
Регистрация: 24.06.2022
Сообщений: 253
13.08.2022, 18:30
Лучший ответ Сообщение было отмечено chukaz как решение

Решение

Цитата Сообщение от chukaz Посмотреть сообщение
по итогу я получаю текст смешанны
ну так извлекайте не текст , а дочерние узлы
и делайте с ними что необходимо

C#
1
2
3
4
    .Select(item =>
             {
                 //var arr = item.InnerText
            var arr = item.Descendants()
или уточните лучше

Цитата Сообщение от samana Посмотреть сообщение
Можете просто вывести их в консоль и скопировать результат сюда?
Добавлено через 1 минуту
дайте строки которые есть и какие нужно получить

Не по теме:

а я ушел, извините, срочно зовут



Добавлено через 2 часа 53 минуты
Цитата Сообщение от js_advent Посмотреть сообщение
ну так извлекайте не текст , а дочерние узлы


C#
1
2
3
4
5
6
7
8
9
 class Pair //  одна пара 
    {
        public string? Subject { get; set; } // предмет
        public string? Teacher1 { get; set; } // первый преподаватель
        public string? Teacher2 { get; set; } // второй преподаватель
        public string? Group { get; set; }
        public string? Place { get; set; } // кабинет
        public string? Extra { get; set; } // 2 неделя
    }

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
 var dataTable = doc.DocumentNode.SelectSingleNode("//table");
 var cells = dataTable.SelectNodes("//div[contains(@class, 'lw_')]");
 int days = 6;
 
        List<List<Pair>> table = Enumerable.Range(1, days)
            .Select(i => cells
            .Where(n => n.HasClass("lw_" + i))
                .Select(pair =>
             {
                 var childs = pair.Descendants();
                 var teachers = childs.Where(n => n.HasClass("teacher"))
                      .Select(t => t.InnerText).ToArray();
                 return new Pair
                 {
                     Subject = childs.Where(n => n.HasClass("subject"))
                  .FirstOrDefault()?.InnerText,
                     Teacher1 = teachers.Any() ? teachers[0] : "",
                     Teacher2 = teachers.Count() > 1 ? teachers[1] : "",
                     Group = childs.Where(n => n.HasClass("group"))
                  .FirstOrDefault()?.InnerText,
                     Place = childs.Where(n => n.HasClass("place"))
                  .FirstOrDefault()?.InnerText,
                     Extra = childs.Where(n => n.HasClass("extra"))
                  .FirstOrDefault()?.InnerText
                 };
             })
            .ToList())
          .ToList();
Тогда обращайтесь к свойствам , форматируйте как угодно при выводе.
Первый преподаватель: table[0][0].Teacher1

Расписание на понедельник:

C#
1
2
3
4
5
  for (int j = 0; j < table[0].Count; j++)
        {
            var pair = table[0][j];
            Console.WriteLine($"Препод 1: {pair.Teacher1}    Кабинет: {pair.Place}    {pair.Extra}");
        }
Препод 1: Фролов С.В. Кабинет: 18б 2 неделя
Препод 1: Василевская А.Н. Кабинет: 429 2 неделя
Препод 1: Фоменко Н.К. Кабинет: 414
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.08.2022, 18:30
Помогаю со студенческими работами здесь

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

Изменение части строки
Привет. Имеется строка, например: &quot;{\&quot;ustavka\&quot;:\&quot;25\&quot;,\&quot;vent\&quot;:\&quot;18\&quot;,\&quot;temp\&quot;:\&quot;24\&quot;}&quot;. Строка берется из БД. Требуется из этой строки...

Изменение строки файла
private void button1_Click(object sender, EventArgs e) { Program.tema = textBox4.Text; Program.timeS...

Изменение строки в файле
Вот есть такая функция, изменяет одну строчку в файле на другую private void editing(string file, string temp, string chtoishem,...

Изменение вида строки
Добрый день! Подскажите как строку вида: string str =...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru