ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70%Забронировать скидку

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

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
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#.