代码之家  ›  专栏  ›  技术社区  ›  dennismonsewicz

红宝石字数

  •  4
  • dennismonsewicz  · 技术社区  · 14 年前

    我试图找出一种方法来计算包含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 回复  |  直到 12 年前
        1
  •  6
  •   Thibaut Barrère    14 年前

    你可以这样做:

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

    会给你:

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

    (旁注:输出的格式为 awesome_print 我热情推荐)

        2
  •  2
  •   willcodejavaforfood    14 年前

    当然

    1. 使用 Nokogiri
    2. 用空格分隔以计算单词数
        3
  •  0
  •   amarsuperstar    14 年前
        4
  •  0
  •   Jack    14 年前

    Hpricot ,然后使用简单的正则表达式执行所需的操作(例如,您只需在空格上拆分然后计数)