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



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

  1. 从整个文本
  2. 中获取35.00
  3. 从整个文本
  4. 中获取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

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

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

这应该会让你在firstsecond中分别得到35.0和42.0。如果您知道这些数字是带有小数的价格,那么您可以稍微简化一下正则表达式:

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

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

first, second = *node.text.tr('$', '').split(' - ')

相关内容

  • 没有找到相关文章

最新更新