【问题标题】:Word Count with RubyRuby 的字数统计
【发布时间】:2010-10-25 15:49:56
【问题描述】:

我正在尝试找出一种方法来计算包含 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 %>

【问题讨论】:

    标签: ruby html-parsing


    【解决方案1】:

    你可以这样做:

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

    会给你:

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

    (旁注:输出格式为我强烈推荐的awesome_print

    【讨论】:

    • 我建议您在某个时候将代码移至专用的辅助函数。它将更容易对其进行单元测试和重用。
    • 你是怎么做的?我是 Rails 新手
    • 既然 Hpricot 已经死了,你可以用 Nokogiri::HTML 代替 Hpricot 做同样的事情
    【解决方案2】:

    当然

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

    【讨论】:

      【解决方案3】:

      你会想要使用 Hpricot 之类的东西来删除 HTML,那么这只是在纯文本中计算单词的一个例子。

      这里是一个剥离 HTML 的例子:http://underpantsgnome.com/2007/01/20/hpricot-scrub/

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-06-27
          • 2014-12-18
          • 1970-01-01
          • 2023-01-04
          • 1970-01-01
          • 2013-03-21
          • 2015-11-15
          • 2017-05-29
          相关资源
          最近更新 更多