0

我有像这样的 HTML:

<div id="c_pcnb" style="height:11px;width:4px;visibility:hidden;position:absolute;">

我想求和4px11px但我不知道如何。我只是得到这些值,但我没有使用组和两个值。我该怎么做呢?

@sizes = (/height:([\d]+)px;width:([\d]+)px;visibility:hidden;position:absolute;/.match body_text)

我必须将高度+宽度相加。

当我尝试时,@sizes[1] + @sizes[2]我得到了错误。我做错了什么?

4

2 回答 2

3

尝试这个:

'<div id=\"c_pcnb\" style=\"height:11px;width:4px;visibility:hidden;position:absolute;\">' \
     .scan(/\d+/) \
     .inject{|s,n| Integer(s) + Integer(n)}   #returns 15

示例 2:

'<div style=\"height:221px;width:47px;\">' \
   .scan(/\d+/).inject{|s,n| Integer(s) + Integer(n)} #=>268

它只是拾取所有(\d+),转换为Integer并提供Sum

css='<div id=\"c_pcnb\" style=\"height:11px;width:4px;visibility:hidden;position:absolute;\">' 
css.scan(/\d+/).inject{|s,n| Integer(s) + Integer(n)} #=> 15
于 2013-09-16T19:10:22.117 回答
0

我会做如下:

require 'nokogiri'

doc= Nokogiri::HTML::Document.parse <<-eotl
<div id="c_pcnb" style="height:11px;width:4px;visibility:hidden;position:absolute;">
eotl

hsh = Hash[*doc.at_css('#c_pcnb')['style'].split(/[:;]/)]
# => {"height"=>"11px",
#     "width"=>"4px",
#     "visibility"=>"hidden",
#     "position"=>"absolute"}
(hsh["height"].to_i + hsh["width"].to_i).to_s + 'px'
# => "15px"
于 2013-09-16T18:42:41.460 回答