Подтвердить что ты не робот

Получите простой текст из HTML в .NET.

Каков наилучший способ получить текстовую строку из строки HTML?

public string GetPlainText(string htmlString)
{
    // any .NET built in utility?
}

Заранее спасибо

4b9b3361

Ответ 1

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

string htmlString = @"<p>I'm HTML!</p>";
Regex.Replace(htmlString, @"<(.|\n)*?>", "");

Ответ 2

Вы можете использовать MSHTML, который может быть довольно прощающим;

//using microsoft.mshtml
HTMLDocument htmldoc = new HTMLDocument();
IHTMLDocument2 htmldoc2 = (IHTMLDocument2)htmldoc;
htmldoc2.write(new object[] { "<p>Plateau <i>of<i> <b>Leng</b><hr /><b erp=\"arp\">2 sugars please</b> <xxx>what? &amp; who?" });

string txt = htmldoc2.body.outerText;

Плато Лэнг 2 сахара, пожалуйста, что? и кто?

Ответ 3

В структуре нет встроенного решения.

Если вам нужно проанализировать HTML, я воспользовался библиотекой под названием HTML Agility Pack. Он анализирует HTML файл и предоставляет ему DOM, аналогичный XML-классам.

Ответ 4

Лично я нашел комбинацию регулярных выражений и HttpUtility лучшим и самым коротким решением.

Return HttpUtility.HtmlDecode(
                Regex.Replace(HtmlString, "<(.|\n)*?>", "")
                )

Это удаляет все теги и затем декодирует любые дополнительные функции, такие как &lt; или &gt;

Ответ 5

Для этого не встроен метод .NET. Но, как указано в @rudi_visser, это можно сделать с помощью регулярных выражений.

Если вам нужно удалить больше, чем только теги (т.е. превратите и ampacirc; в â), вы можете использовать более развернутое решение, например, найденное здесь.

Ответ 6

Ответ Эрика Петручелли работал на меня в Report Builder. Пришлось перейти с С# на VB, чтобы построитель отчетов мог понять. Спасибо