用Ruby计算字数

时间:2010-10-25 15:49:57

标签: ruby html-parsing

我试图想出一种方法来计算包含html的特定字符串中的单词。

示例字符串:

<p>Hello World</p>

Ruby中有没有办法计算p标签之间的单词?或者这个问题的任何标签?

示例:

<p>Hello World</p>
<h2>Hello World</h2>
<li>Hello World</li>

提前致谢!

编辑(这是我的工作代码)

控制器:

class DashboardController < ApplicationController
  def index
    @pages = Page.find(:all)
    @word_count = []
  end

end

查看:

<% @pages.each do |page| %>

        <%  page.current_state.elements.each do |el| %>
            <% @count = Hpricot(el.description).inner_text.split.uniq.size  %>
            <% @word_count << @count %>
        <% end %>

            <li><strong>Page Name: <%= page.slug %> (Word Count: <%= @word_count.inject(0){|sum,n| sum+n } %>)</strong></li>

<% end %>

4 个答案:

答案 0 :(得分:6)

以下是您可以这样做的方法:

require 'hpricot'
content = "<p>Hello World...."
doc = Hpricot(content)
doc.inner_text.split.uniq

会给你:

[
  [0] "Hello",
  [1] "World"
]

(旁注:输出格式为awesome_print,我热烈推荐)

答案 1 :(得分:2)

不确定

  1. 使用Nokogiri解析HTML / XML和XPath以查找元素及其文本值。
  2. 在空格上拆分以计算单词

答案 2 :(得分:0)

你会想要使用像Hpricot这样的东西去除HTML,然后它只是用纯文本计算单词的情况。

以下是剥离HTML的示例:http://underpantsgnome.com/2007/01/20/hpricot-scrub/

答案 3 :(得分:0)

首先从能够解析像Hpricot这样的HTML的东西开始,然后使用简单的正则表达式来做你想做的事情(你只能拆分空格然后再计算)