Удаление HTML тегов и   из строки в C# с помощью regex
Быстрый ответ
Для удаления HTML-тегов и
в строках на языке С#, вы можете использовать Regex.Replace
:
using System.Text.RegularExpressions;
string CleanHtml(string html) => Regex.Replace(html, "<[^>]+>| ", "").Trim();
Примените функцию CleanHtml(вашHtmlСтрока)
, чтобы очистить текст от тегов и неразрывных пробелов.
Обработка специфических случаев
Даже после начального удаления HTML могут возникнуть некоторые частные случаи. Узнаем, как можно их решить.
Нормализация пробелов
Если после удаления тегов в тексте осталось слишком много пробелов, вы можете привести их в порядок:
string NormalizeWhitespace(string text) => Regex.Replace(text, @"\s{2,}", " ");
Этот код поставляет вместо каждого набора последовательных пробелов лишь один.
Декодирование сущностей
Не ограничивайтесь только
, ведь вы можете декодировать все HTML-сущности. Для этого используйте HttpUtility.HtmlDecode
.
Удаление скриптов и стилей
Теги <script>
и <style>
могут вызвать проблемы. Желательно удаять их явно для получения корректного текстового содержания.
Использование StringBuilder
При работе с большими объемами текста используйте StringBuilder
, это позволит увеличить производительность обработки строк.
Визуализация
Текст, очищенный от HTML, выглядит как будто написанный с абсолютно чистого листа 📖:
Исходный текст: "<p>Привет, мир! </p>"
Процесс очистки:
1. Удаление HTML-тегов: "Привет, мир! "
2. Удаление HTML-сущностей: "Привет, мир! "
И вот конечный результат:
"Привет, мир!"
✨ Хорошо читаемый текст без лишних элементов!
Глубокая очистка HTML
HTML-строки, которые не были удалены при первоначальной очистке, могут быть обработаны с помощью дополнительного набора действий.
Повторение процесса очистки
Иногда, чтобы полностью очистить текст, требуется несколько итераций:
string iterativeCleanHtml(string html)
{
string prevHtml;
do
{
prevHtml = html;
html = Regex.Replace(html, @"<[^>]+>| ", "").Trim();
} while (html != prevHtml);
return html;
}
Специальные регулярные выражения
Каждый HTML-документ имеет свои особенности, и для удаления тегов может потребоваться использовать уникальные выражения.
Сложные случаи
Регулярные выражения могут не справляться со сложными структурами тегов или специальными кейсами в HTML. Важно постоянно развивать свои навыки в тестировании и анализе.
Полезные материалы
- Html Agility Pack — библиотека, предназначенная для работы с сложными HTML-структурами в C#.
- Использование регулярных выражений в C# для удаления HTML-тегов – Stack Overflow — обсуждение особенностей работы с регулярными выражениями.
- Метод HttpUtility.HtmlDecode (System.Web) | Microsoft Learn — подробная информация о процессе декодирования HTML-сущностей.
- GitHub – AngleSharp/AngleSharp — набор инструментов для парсинга HTML.
- Лучшие практики для регулярных выражений в .NET – .NET | Microsoft Learn — советы по оптимизации работы с регулярными выражениями.
- Интерполяция строк – форматирование вывода в C# | Microsoft Learn — как применить интерполяцию строк для улучшения читаемости кода.
- Экранирование символов в C# – Статья на C# Corner — о способах экранирования специальных символов в C#.