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

Задача на строки

27.01.2014, 18:30. Показов 1702. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание: напишите программу, которая удаляет из строки все html-теги (<html> <font> и т.д.). Строка должна читаться из файла. HTML-тегом считается любая последовательность символов, находящаяся между знаками ‘<’ и ‘>’. При работе со строкой считать, что она заведомо является корректной, т.е. вложенные HTML теги невозможны, каждому символу ‘<’ соответствует парный ‘>’, и строка не будет содержать знаков ‘<’ и ‘>’ не относящихся к какому-либо HTML-тегу. Исходную и результирующую строку вывести на экран для проверки.

Нельзя использовать стандартные методы типа Split, Sort, Add и пр., которые могут облегчить жизнь.

У меня уже есть написанный метод сплита, но я понятия не имею, как решить данную задачу, прошу помощи.

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
        static public int WhiteSpaceCount(string str)
        {
            int count = 0;
            for (int i = 0; i < str.Length; i++)
            {
                if (str[i] == ' ')
                {
                    count++;
                }
            }
            return count;
        }
        static public string[] SplitByWhiteSpace(string source)
        {
            int length = WhiteSpaceCount(source) + 1;
            string[] res = new string[length];
            int globalCount = 0;
            for (int wordCount = 0; wordCount < length; wordCount++)
            {
                StringBuilder sb = new StringBuilder();
                while (globalCount < source.Length && source[globalCount] != ' ')
                {
                    sb.Append(source[globalCount]);
                    globalCount++;
                }
                res[wordCount] = sb.ToString();
                globalCount++;
            }
            return res;
        }
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.01.2014, 18:30
Ответы с готовыми решениями:

Задача. Вводится число N (кол-во строк). Вводятся все строки. Вывести последний символ каждой строки
Как это написать быстрее всего?

Задача на строки(С/С++)
Пользователь вводит отдельно строку и символ, необходимо показать на экран номер только последнего совпадения (нумерация с единицы). ...

Задача на строки
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; ...

5
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
27.01.2014, 18:50
А Regex использовать можно?
0
2 / 2 / 1
Регистрация: 02.10.2013
Сообщений: 35
27.01.2014, 18:54  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
А Regex использовать можно?
Нет нельзя, но если у вас нет других идей, то пригодится код и с ним.
0
 Аватар для Kill100
434 / 299 / 82
Регистрация: 11.12.2010
Сообщений: 1,209
27.01.2014, 19:07
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
        private static void Main(string[] args)
        {
            var inString = "<div><a href=\"https://www.cyberforum.ru/private.php\">Личные сообщения</a>: Новых 0, всего 188.</div> </div> </td> </tr> </table>   <div class=\"tborder\" style=\"padding:1px; border-top-width:0px\"> <table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"100%\" align=\"center\"> <tr align=\"center\"> <td class=\"vbmenu_control\"><a href=\"https://www.cyberforum.ru/usercp.php\">Мой кабинет</a></td> <td class=\"vbmenu_control\">";
            var outString = "";
            var flag = false;
            foreach (var _char in inString)
            {
                if (!flag && _char == '<')
                {
                    flag = true;
                    continue;
                }
                if (flag && _char == '>')
                {
                    flag = false;
                    continue;
                }
                if (!flag)
                    outString += _char;
            }
            Console.WriteLine(outString);
            Console.ReadLine();
        }
Добавлено через 11 минут
еще вариант
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 private static void Main(string[] args)
        {
            var inString = "<div><a href=\"https://www.cyberforum.ru/private.php\">Личные сообщения</a>: Новых 0, всего 188.</div> </div> </td> </tr> </table>   <div class=\"tborder\" style=\"padding:1px; border-top-width:0px\"> <table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"100%\" align=\"center\"> <tr align=\"center\"> <td class=\"vbmenu_control\"><a href=\"https://www.cyberforum.ru/usercp.php\">Мой кабинет</a></td> <td class=\"vbmenu_control\">";
            var outString = "";
            for (var i = 0; i < inString.Length; i++)
            {
                if (inString[i] == '<')
                {
                    while (inString[i] != '>' && i + 1 < inString.Length)
                        i++;
                }
                else
                {
                    outString += inString[i];
                }
            }
            Console.WriteLine(outString);
            Console.ReadLine();
        }
1
2 / 2 / 1
Регистрация: 02.10.2013
Сообщений: 35
27.01.2014, 19:14  [ТС]
Цитата Сообщение от Kill100 Посмотреть сообщение
Добавлено через 11 минут
еще вариант
А можно попросить вас пояснить первый вариант?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
            var flag = false;
            foreach (var _char in str)
            {
                if (!flag && _char == '<')
                {
                    flag = true;
                    continue;
                }
                if (flag && _char == '>')
                {
                    flag = false; // с true, false тоже не очень
                    continue;
                }
                if (!flag)
                    outString += _char; // это условие особенно не понятно
            }
            Console.WriteLine(outString);
Прокомментировать данный кусок кода? Я переделал, чтобы строка из файла считывалась, а вот с этим не разобрался. Просто недавно только начал изучать c# и трудновато сообразить.
0
 Аватар для Kill100
434 / 299 / 82
Регистрация: 11.12.2010
Сообщений: 1,209
27.01.2014, 19:22
Лучший ответ Сообщение было отмечено AlexandrGn как решение

Решение

Цитата Сообщение от AlexandrGn Посмотреть сообщение
Просто недавно только начал изучать c# и трудновато сообразить.
А это не C# подход. это скорее Сишный подход к проблеме

Тут все просто бежим по символам в строке.
Если наткнулись на < и у нас еще не было открывающего символа то ставим флажок что мы внутри тега. и продолжаем continue прервав текущую итерацию но не цикл
Если наткнулись на > и мы внутри тега (flag = true) то помечаем что тек закончился (flag=false) и продолжаем цикл continue прервав текущую итерацию но не цикл
Если мы не в теге значит это текст. просто к строке прибавляем текущий символ.

Добавлено через 54 секунды
Но поверь второй вариант кода лучше. В нем хотя бы нету запутывающий флажков Да и быстрее он.
только исправь
C#
1
 while (inString[i] != '>' && i+1< inString.Length)
на
C#
1
 while (inString[i] != '>' && i< inString.Length)
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.01.2014, 19:22
Помогаю со студенческими работами здесь

задача.Строки
Дана строка. Преобразовать все прописные русские буквы в строчные.

Задача на строки!
Такая вот задачка: Ввести строку символов и подсчитать количество повторений слов одинаковой длины. Изъять все слова заданной пользователем...

Задача на строки
С клавиатуры вводятся 3 троки.В первой строке заменить все вхождения строки 2 на строку 3 .Вывести количество выполненых замен. Если не...

Задача на строки
Дан массив слов. Составить предложение из слов, которые начинаются на заданный символ, предварительно удалив из слова все такие символы...

задача на строки
для последнего слова заданного предложения указать, сколько раз оно встречается в предложении


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru