简单的一个 - 如何在(比如说)第 3 段截断博客文章的文本?并明确告诉它不渲染图像?
我正在使用降价顺便说一句。这可以通过简单的代码以某种“优雅”的方式完成,并且在纯红宝石中没有外部宝石吗?
如果没有,如何最好地实施它?
简单的一个 - 如何在(比如说)第 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 个。