Использование AngleSharp для обработки некоторого HTML-кода и извлечения текстового содержимого элемента для последующего поиска, у меня возникла проблема с тем, как AngleSharp удаляет теги HTML. Например, у меня есть кусок HTML-то вроде этого (минус строки и вкладки):Сохранение (или восстановление) пробела в TextContent
<div id="someID">
blah, blah, blah, blah
blah, blah,
<ul>
<li><i>action.</i></li>
<li><i>Typical, blah, blah, blah</li>
</ul>
blah, blah, blah
</div>
Проблема здесь, когда я получаю TextContent
:
var content = someDiv.TextContext;
Он будет выходить как это:
"...blah, blah, action.Typical blah, blah..."
слова action
и Typical
были разбиты вместе без пробела (потому что единственное между ними HTML-теги). Это сворачивает мои усилия, чтобы затем символизировать текстовое содержимое, потому что action.Typical
рассматривается как одно слово вместо двух слов.
Я мог бы, конечно, просто запустить поиск и замену (возможно, с использованием регулярных выражений), что-то вроде (\S)\.(\S)
и заменить его $1. $2
, но потом, что бы что-то вроде www.somecompany.com
и разделить его на www
, somecompany
и com
и I может хочу сохранить это (или, если не считать, что www
и com
вряд ли будут очень полезны в любом случае). Я мог исключить слова с более чем одной точкой, но веб-адрес может отображаться как somecompany.com
(без www
), или вы можете столкнуться с адресом электронной почты, например, [email protected]
.
Есть ли надежный способ обойти это? Чтобы сохранить хотя бы одно пространство после того, как теги были удалены?
Действительно ли это HTML, который вы разбираете (буквально)? Потому что, если бы это было так, то AngleSharp, безусловно, имел бы пробелы (фактически новую строку и некоторые пробелы) между «действием». и "типичный". –
@FlorianRappl: На самом деле нет, я отформатировал его для ясности, но на самом деле это единственная строка без разрывов строк или вкладок. Думаю, эта часть немного запутанна. Я уточню в вопросе. –
Да, я догадался. Как я уже сказал: в противном случае вы увидите текст текстовых узлов между ними. Я предоставлю другой способ/ответ, который может сработать для вас. –