Удаление HTML тегов и &nbsp из строки в C# с помощью regex

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для удаления HTML-тегов и   в строках на языке С#, вы можете использовать Regex.Replace:

csharp
Скопировать код
using System.Text.RegularExpressions;

string CleanHtml(string html) => Regex.Replace(html, "<[^>]+>|&nbsp;", "").Trim();

Примените функцию CleanHtml(вашHtmlСтрока), чтобы очистить текст от тегов и неразрывных пробелов.

Кинга Идем в IT: пошаговый план для смены профессии

Обработка специфических случаев

Даже после начального удаления HTML могут возникнуть некоторые частные случаи. Узнаем, как можно их решить.

Нормализация пробелов

Если после удаления тегов в тексте осталось слишком много пробелов, вы можете привести их в порядок:

csharp
Скопировать код
string NormalizeWhitespace(string text) => Regex.Replace(text, @"\s{2,}", " ");

Этот код поставляет вместо каждого набора последовательных пробелов лишь один.

Декодирование сущностей

Не ограничивайтесь только &nbsp;, ведь вы можете декодировать все HTML-сущности. Для этого используйте HttpUtility.HtmlDecode.

Удаление скриптов и стилей

Теги <script> и <style> могут вызвать проблемы. Желательно удаять их явно для получения корректного текстового содержания.

Использование StringBuilder

При работе с большими объемами текста используйте StringBuilder, это позволит увеличить производительность обработки строк.

Визуализация

Текст, очищенный от HTML, выглядит как будто написанный с абсолютно чистого листа 📖:

Markdown
Скопировать код
Исходный текст: "<p>Привет, мир!&nbsp;</p>"

Процесс очистки:

plaintext
Скопировать код
1. Удаление HTML-тегов: "Привет, мир!&nbsp;"
2. Удаление HTML-сущностей: "Привет, мир! "

И вот конечный результат:

plaintext
Скопировать код
"Привет, мир!"

✨ Хорошо читаемый текст без лишних элементов!

Глубокая очистка HTML

HTML-строки, которые не были удалены при первоначальной очистке, могут быть обработаны с помощью дополнительного набора действий.

Повторение процесса очистки

Иногда, чтобы полностью очистить текст, требуется несколько итераций:

csharp
Скопировать код
string iterativeCleanHtml(string html)
{
    string prevHtml;
    do
    {
        prevHtml = html;
        html = Regex.Replace(html, @"<[^>]+>|&nbsp;", "").Trim();
    } while (html != prevHtml);

    return html;
}

Специальные регулярные выражения

Каждый HTML-документ имеет свои особенности, и для удаления тегов может потребоваться использовать уникальные выражения.

Сложные случаи

Регулярные выражения могут не справляться со сложными структурами тегов или специальными кейсами в HTML. Важно постоянно развивать свои навыки в тестировании и анализе.

Полезные материалы

  1. Html Agility Pack — библиотека, предназначенная для работы с сложными HTML-структурами в C#.
  2. Использование регулярных выражений в C# для удаления HTML-тегов – Stack Overflow — обсуждение особенностей работы с регулярными выражениями.
  3. Метод HttpUtility.HtmlDecode (System.Web) | Microsoft Learn — подробная информация о процессе декодирования HTML-сущностей.
  4. GitHub – AngleSharp/AngleSharp — набор инструментов для парсинга HTML.
  5. Лучшие практики для регулярных выражений в .NET – .NET | Microsoft Learn — советы по оптимизации работы с регулярными выражениями.
  6. Интерполяция строк – форматирование вывода в C# | Microsoft Learn — как применить интерполяцию строк для улучшения читаемости кода.
  7. Экранирование символов в C# – Статья на C# Corner — о способах экранирования специальных символов в C#.