使用nokogiri n Ruby on Rails分别获得折扣之前和之后的价格

问题描述 投票:0回答:2

我正在尝试学习废弃这些值,我把它放在两个不同的任务中:

  1. 从整个文本中获取35.00
  2. 从整个文本中获取42.00

下面是html:

<p style="font-size: 30px; margin-left: -10px; padding: 15px 0pt;">
$35.00 - $42.00
</p>

我用来获取整个文本的代码如下:

node = html_doc.at_css('p')  
p node.text
ruby ruby-on-rails-3 nokogiri
2个回答
2
投票

你可以从node.text获得整个文本,这就是你需要和Nokogiri一起去的地方。从那里你可以使用scan找到数字和一些列表争论(flattenmap),你就完成了。像这样的东西:

first, second = node.text.scan(/(\d+(?:\.\d+))/).flatten.map(&:to_f)

这应该让你在first42.0second留下35.0。如果您知道这些数字是带小数的价格,那么您可以稍微简化正则表达式:

first, second = node.text.scan(/(\d+\.\d+)/).flatten.map(&:to_f)

1
投票

mu的答案是正确的,但使用split / splat似乎更简单。

first, second = *node.text.tr('$', '').split(' - ')
© www.soinside.com 2019 - 2024. All rights reserved.