У меня есть фрагменты Html, хранящиеся в таблице. Не целые страницы, без тегов и т.п., а только базовое форматирование.
Я хотел бы иметь возможность отображать этот Html только как текст, без форматирования , на данной странице (на самом деле только первые 30-50 символов, но это простой бит).
Как мне поместить «текст» в этом HTML в строку как обычный текст?
Итак, этот фрагмент кода.
<b>Hello World.</b><br/><p><i>Is there anyone out there?</i><p>
Становится:
Привет мир. Есть там кто-нибудь?
Ответы:
Если вы говорите об удалении тегов, это относительно просто, если вам не нужно беспокоиться о таких вещах, как
<script>
теги. Если все, что вам нужно сделать, это отобразить текст без тегов, вы можете сделать это с помощью регулярного выражения:Если вам действительно нужно беспокоиться о
<script>
тегах и тому подобном, вам понадобится что-то немного более мощное, чем регулярные выражения, потому что вам нужно отслеживать состояние, что-то вроде контекстно-свободной грамматики (CFG). Хотя вы могли бы сделать это с помощью «слева направо» или не жадного сопоставления.Если вы умеете использовать регулярные выражения, существует множество веб-страниц с хорошей информацией:
Если вам нужно более сложное поведение CFG, я бы посоветовал использовать сторонний инструмент, к сожалению, я не знаю хорошего, что можно порекомендовать.
источник
В одном из примеров бесплатного HtmlAgilityPack с открытым исходным кодом есть метод, который преобразует HTML в обычный текст.
Подайте ему строку HTML, например
И вы получите результат в виде простого текста, например:
источник
script
иstyle
тегов и записи внутреннего текста других элементов в выходную строку. Я сомневаюсь, что он прошел много испытаний с реальными данными.Я не мог использовать HtmlAgilityPack, поэтому написал для себя второе лучшее решение
источник
HTTPUtility.HTMLEncode()
предназначен для обработки кодирования HTML-тегов как строк. Он берет на себя всю тяжелую работу за вас. Из документации MSDN :HTTPUtility.HTMLEncode()
метод, подробно описанный здесь :Использование:
источник
Чтобы добавить к ответу vfilby, вы можете просто выполнить замену RegEx в своем коде; новые классы не нужны. На случай, если другие новички, такие как я, наткнутся на этот вопрос.
Затем...
источник
Трехэтапный процесс преобразования HTML в простой текст
Сначала вам нужно установить пакет Nuget для HtmlAgilityPack. Во-вторых, создайте этот класс.
Используя приведенный выше класс со ссылкой на ответ Иуды Химанго
В-третьих, вам нужно создать объект класса выше и использовать
ConvertHtml(HTMLContent)
метод для преобразования HTML в обычный текст, а неConvertToPlainText(string html);
источник
У него есть ограничение, заключающееся в том, что он не сворачивает длинные строчные пробелы, но он определенно переносим и уважает макет, как веб-браузер.
источник
В HtmlAgilityPack нет метода с именем ConvertToPlainText, но вы можете преобразовать строку html в строку CLEAR с помощью:
Это работает для меня. НО Я НЕ НАШЕЛ МЕТОД С ИМЯ «ConvertToPlainText» В «HtmlAgilityPack».
источник
Я думаю, что самый простой способ - создать метод расширения строки (на основе того, что предложил пользователь Ричард):
Затем просто используйте этот метод расширения для любой строковой переменной в вашей программе:
Я использую этот метод расширения для преобразования комментариев в формате HTML в простой текст, чтобы он правильно отображался в кристаллическом отчете, и он отлично работает!
источник
Самый простой способ нашел:
Класс HtmlFilter находится в Microsoft.TeamFoundation.WorkItemTracking.Controls.dll
DLL можно найти в такой папке:% ProgramFiles% \ Common Files \ microsoft shared \ Team Foundation Server \ 14.0 \
В VS 2015 для библиотеки DLL также требуется ссылка на Microsoft.TeamFoundation.WorkItemTracking.Common.dll, расположенный в той же папке.
источник
Если у вас есть данные, содержащие теги HTML, и вы хотите отобразить их, чтобы пользователь мог ВИДЕТЬ теги, используйте HttpServerUtility :: HtmlEncode.
Если у вас есть данные, содержащие теги HTML, и вы хотите, чтобы пользователь видел отображаемые теги, отобразите текст как есть. Если текст представляет собой всю веб-страницу, используйте для него IFRAME.
Если у вас есть данные с тегами HTML, и вы хотите удалить теги и просто отобразить неформатированный текст, используйте регулярное выражение.
источник
Я столкнулся с подобной проблемой и нашел лучшее решение. Код ниже работает идеально для меня.
}
Сначала нужно было удалить escape-символы, такие как \ n и \ r, потому что они заставляют регулярные выражения перестать работать должным образом.
Более того, чтобы строка результата правильно отображалась в текстовом поле, может потребоваться разделить ее и установить свойство Lines текстового поля вместо присвоения свойству Text.
this.txtResult.Lines = StripHTML (this.txtSource.Text) .Split ("\ r" .ToCharArray ());
Источник: https://www.codeproject.com/Articles/11902/Convert-HTML-to-Plain-Text-2
источник
Зависит от того, что вы подразумеваете под «html». Самый сложный случай - это целые веб-страницы. С этим также легче всего справиться, поскольку вы можете использовать веб-браузер в текстовом режиме. См. Статью Википедии со списком веб-браузеров, включая браузеры с текстовым режимом. Lynx, вероятно, самый известный, но один из других может быть лучше для ваших нужд.
источник
Вот мое решение:
Пример:
источник
У меня был тот же вопрос, просто мой html имел простой заранее известный макет, например:
В итоге я использовал такой простой код:
Какие выходы:
источник
Не писал, а использовал:
источник
Думаю, у него есть простой ответ:
источник
Для тех, кто ищет точное решение вопроса OP для текстового сокращения данного html-документа без символов новой строки и HTML-тегов, пожалуйста, найдите решение ниже.
Как и в случае любого предлагаемого решения, в приведенном ниже коде есть некоторые предположения:
he<span>ll</span>o
должны выводитьсяhello
. Список встроенных тегов: https://www.w3schools.com/htmL/html_blocks.aspУчитывая вышеизложенное, следующее расширение строки со скомпилированными регулярными выражениями будет выводить ожидаемый простой текст с учетом экранированных символов html и null при вводе null.
источник
общедоступная статическая строка StripTags2 (строка html) {return html.Replace ("<", "<"). Replace (">", ">"); }
Этим вы избегаете всех «<» и «>» в строке. Это то, что вы хотите?
источник