Каков наилучший способ получить текстовую строку из строки HTML?
public string GetPlainText(string htmlString)
{
// any .NET built in utility?
}
Заранее спасибо
Каков наилучший способ получить текстовую строку из строки HTML?
public string GetPlainText(string htmlString)
{
// any .NET built in utility?
}
Заранее спасибо
Там нет встроенной утилиты, насколько я знаю, но в зависимости от ваших требований вы можете использовать регулярные выражения для выделения всех тегов:
string htmlString = @"<p>I'm HTML!</p>";
Regex.Replace(htmlString, @"<(.|\n)*?>", "");
Вы можете использовать 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? & who?" });
string txt = htmldoc2.body.outerText;
Плато Лэнг 2 сахара, пожалуйста, что? и кто?
В структуре нет встроенного решения.
Если вам нужно проанализировать HTML, я воспользовался библиотекой под названием HTML Agility Pack. Он анализирует HTML файл и предоставляет ему DOM, аналогичный XML-классам.
Лично я нашел комбинацию регулярных выражений и HttpUtility лучшим и самым коротким решением.
Return HttpUtility.HtmlDecode(
Regex.Replace(HtmlString, "<(.|\n)*?>", "")
)
Это удаляет все теги и затем декодирует любые дополнительные функции, такие как <
или >
Для этого не встроен метод .NET. Но, как указано в @rudi_visser, это можно сделать с помощью регулярных выражений.
Если вам нужно удалить больше, чем только теги (т.е. превратите и ampacirc; в â), вы можете использовать более развернутое решение, например, найденное здесь.
Ответ Эрика Петручелли работал на меня в Report Builder. Пришлось перейти с С# на VB, чтобы построитель отчетов мог понять. Спасибо