Разделить строку html на N частей
есть ли у кого-нибудь пример разбиения строки html (исходящей из крошечного редактора mce) и разбиения ее на N частей с помощью C#?
мне нужно разделить строку равномерно, не разделяя слова.
Я думал просто разделить html и использовать HtmlAgilityPack, чтобы попытаться исправить сломанные теги. Хотя я не уверен, как найти точку разделения, так как в идеале она должна быть основана на тексте, а не на html.
у кого-нибудь есть идеи о том, как это сделать?
обновление
по запросу, вот пример ввода и желаемого вывода.
вход:
<p><strong>Lorem ipsum dolor sit amet, <em>consectetur adipiscing</em></strong> elit.</p>
выход (при разделении на 3 cols):
Part1: <p><strong>Lorem ipsum dolor</strong></p>
Part2: <p><strong>sit amet, <em>consectetur</em></strong></p>
Part3: <p><strong><em>adipiscing</em></strong> elit.</p>
обновление 2:
Я только что играл с Tidy HTML, и это, похоже, хорошо работает при исправлении сломанных тегов, поэтому это может быть хорошим вариантом, если я смогу найти способ найти разделение пинты?
обновление 3
используя метод, подобный этому усечь строку на целых словах в .NET C#, теперь мне удалось получить список простых текстовых слов, которые будут составлять каждую часть. Итак, скажем, используя Tidy HTML у меня есть допустимая структура XML для html, и учитывая этот список слов, у кого-нибудь есть идея о том, что теперь будет лучшим способом разделить его?
обновление 4
может кто-нибудь увидеть проблему с используя регулярное выражение, чтобы найти индексы с HTML следующим образом:
учитывая строку простого текста "sit amet, consectetur", замените все пробелы регулярным выражением "(s / ) * ", теоретически находя эту строку с любой комбинацией пробелов и / или тегов
я мог бы просто использовать Tidy HTML для исправления сломанных тегов html?
большое спасибо
матовая
2 ответов
Предлагаемое Решение
человек, это проклятие шахты! Я, по-видимому, не могу уйти от проблемы, не потратив до-и-в том числе необоснованным количество времени на это.
Я думал об этом. Я подумал о HTML Tidy, и, возможно, это сработает, но мне было трудно обернуть вокруг него голову.
Итак, я написал свое собственное решение.
Я проверил это на код input и на некоторых другой вклад, который я собрал сам. Кажется, работает довольно хорошо. Конечно, в нем есть дыры, но это может дать вам отправную точку.
во всяком случае, мой подход был таков:
- Инкапсулируйте понятие одного слова в HTML-документе, используя класс, который включает информацию о положении этого слова в иерархии HTML-документов, вплоть до заданной "вершины". Это я реализовал в
HtmlWord
классом ниже. - создать класс, который способен писать одну строку, состоящую из этих HTML-слов выше, так что теги start-element и end-element добавляются в соответствующих местах. Это я реализовал в
HtmlLine
классом ниже. - напишите несколько методов расширения, чтобы сделать эти классы сразу и интуитивно доступными прямо из
Это предложение только взломать-надеюсь, есть лучший способ.
в основном, вы хотите взять кусок текста в формате HTML и разделить его на более мелкие части, которые все еще сохраняют шрифт и т. д. оригинала. Я думаю, вы можете загрузить исходный HTML в элемент управления RTF или объект Word, разделить его на части, которые сохраняют форматирование, а затем вывести части как отдельный HTML.
также может быть способ использования HtmlAgilityPack, как это, если он предоставляет простой способ извлечения текста с информацией о форматировании из исходного HTML.