用RoR从文本单元中抓取第一段?

时间:2012-04-14 20:59:47

标签: ruby-on-rails ruby text ruby-on-rails-3.2

标题几乎解释了它。我正在使用Ruby 1.9.3和Rails 3.2.2为自己编写一个博客引擎,我需要能够从帖子中获取第一段(在数据库中存储为文本单元)以用作帖子首页摘要。这样做最简单的方法是什么?

谷歌在这个问题上透露的很少;这似乎不是一个普遍的需要。

3 个答案:

答案 0 :(得分:14)

一旦你开始思考在你的世界中究竟定义了什么“段落”,答案就会变得相当明显。

如果是第一个字符列表,后跟两个换行符?像

这样的东西
str.split("\n\n", 2)[0]

可行。

如果您有HTML并且您的段落由<p>标签定义,请使用nokogiri

Nokogiri::HTML.parse(input_string).css('p').first.text

但是,这一切都取决于你如何定义你的段落。一旦你开始考虑你想要拥有什么,例如如何以抽象的方式将输入数据转换为输出数据,这样的事情通常会解决。所需的算法自然来自这些步骤。

答案 1 :(得分:0)

如果这可能对某人有帮助,我通过将Holger Just的Nokogiri解决方案与RedCloth相结合来获得html标签,从而在RoR中获得了理想的结果:

Nokogiri::HTML.parse(raw RedCloth.new(input_string).to_html).css('p').first.text

答案 2 :(得分:-1)

str.lines [0]应该给你第一句话......或者如果你不介意在句子中间分裂那么只需使用truncate()ActionView Helper