Для проекта, подобного блогу, я хочу получить первые несколько абзацев, заголовков, списков или чего-либо в пределах диапазона символов из сгенерированного фрагмента HTML-фрагмента для уценки для отображения в виде сводки.
Так что, если у меня есть
<h1>hello world</h1>
<p>Lets say these are 100 chars</p>
<ul>
<li>some bla bla, 40 chars</li>
</ul>
<p>some other text</p>
И предположим, я хочу подвести итог с текстом в пределах первых 150 символов (не обязательно должен быть слишком точным, я мог бы просто получить первые 150 символов, включая теги и продолжить с этим, новероятно, создаст некоторые артефакты в хвосте, которые могут быть более трудными для обработки ...), он должен дать мне h1, p и ul, но не конечный p (который будет обрезан).Если первый элемент должен иметь более 150 символов, я бы взял полный первый элемент.
Как я могу получить это?Используя XPath или регулярное выражение?Я немного не знаю об этом ...
Редактировать
Сначала я хочу поблагодарить СПАСИБО всем, кто ответил!
Несмотря на то, что я получил действительно хорошие ответы в этой теме, я обнаружил, что гораздо проще подключить его до того, как включится интерпретатор уценки, взять первые n текстовых блоков, разделенных \ r \ n \ r \ n, и просто передать их для md.поколение.
class String
def summarize_md length
arr = self.split(/\r\n\r\n/)
sum =""
arr.each do |ea|
break if sum.length + ea.length > length
sum = sum+"#{ea}\r\n\r\n"
end
sum
end
end
, хотя, возможно, этот код можно сократить до одной строки, он все же намного проще и удобнее, чем любое из предложенных решений.В любом случае, поскольку мой вопрос можно интерпретировать так, как если бы html был отправной точкой (а не текстом md), я просто дам ответ первому парню ... Я надеюсь, что это просто ...