0

简单的一个 - 如何在(比如说)第 3 段截断博客文章的文本?并明确告诉它不渲染图像?

我正在使用降价顺便说一句。这可以通过简单的代码以某种“优雅”的方式完成,并且在纯红宝石中没有外部宝石吗?

如果没有,如何最好地实施它?

4

1 回答 1

3

对于截断段落,如下所示应该起作用:

def truncate_by_paragraph(text, num=3)
  # since I'm not sure if the text will have \r, \n or both I'm swapping
  # all \r characters for \n, then splitting at the newlines and removing
  # any blank characters from the array
  array = text.gsub("\r", "\n").split("\n").reject { |i| i == "" }
  array.take(num).join("\n") + ".." # only 2 dots since sentence will already have 1
end

要删除图像,您可以执行以下操作:

def remove_images(text)
  text.gsub(/<img([^>])+/, "")
end

然后你可以做

truncate_by_paragraph(@text) # will return first 3 paragraphs
truncate_by_paragraph(@text, 5) # will return first 5 paragraphs
remove_images(truncate_by_paragraph(@text)) # 3 paragraphs + no images

根据您所采用的格式,您可能希望join在第一种方法中更改join("\n\n")以获得双倍间距。

此外,如果您真的想要...在文本的末尾,您可能想要测试第 3 段是否有一个点,或者它可能已经有 3 个。

于 2013-04-16T16:47:40.200 回答