Разделить строку 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 и на некоторых другой вклад, который я собрал сам. Кажется, работает довольно хорошо. Конечно, в нем есть дыры, но это может дать вам отправную точку.

во всяком случае, мой подход был таков:

  1. Инкапсулируйте понятие одного слова в HTML-документе, используя класс, который включает информацию о положении этого слова в иерархии HTML-документов, вплоть до заданной "вершины". Это я реализовал в HtmlWord классом ниже.
  2. создать класс, который способен писать одну строку, состоящую из этих HTML-слов выше, так что теги start-element и end-element добавляются в соответствующих местах. Это я реализовал в HtmlLine классом ниже.
  3. напишите несколько методов расширения, чтобы сделать эти классы сразу и интуитивно доступными прямо из

Это предложение только взломать-надеюсь, есть лучший способ.

в основном, вы хотите взять кусок текста в формате HTML и разделить его на более мелкие части, которые все еще сохраняют шрифт и т. д. оригинала. Я думаю, вы можете загрузить исходный HTML в элемент управления RTF или объект Word, разделить его на части, которые сохраняют форматирование, а затем вывести части как отдельный HTML.

также может быть способ использования HtmlAgilityPack, как это, если он предоставляет простой способ извлечения текста с информацией о форматировании из исходного HTML.