Rails:拆分文本,包括美元结束欧元

时间:2016-02-24 04:27:03

标签: ruby-on-rails ruby

我正在使用Rails和Nokogiri,我正在尝试解析一些网站 这就是我被困住的地方:

doc.css('#example > li:nth-child(1)').each do |node|
    money = node.xpath('//*ul/li/div/span').text
end

它返回类似:

$100,000£230,000$40,000$9,000€600$800,000

我想拆分这些项目,将它们保存到数据库中,最后将它们交给视图。

因此,在视图中,我希望它看起来像:

(1)$ 100,000个
(2)£230000
(3)$ 40,000个
(4)$ 9,000名
(5)€600
(6)$ 800,000

我试图通过以下代码拆分这些项目。

money = node.xpath('//*ul/li/div/span').text.split(/[$€£]/)

但结果如下:

["", "100,000", "230,000", "40,000", "9,000", "600", "800,000"]

我不知道哪个项目是美元,欧元或池塘 有什么好方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

你快到了, 只需使用积极的前瞻:)

irb(main):005:0> "$100,000£230,000$40,000$9,000€600$800,000".split(/(?=[$£€])/)
=> ["$100,000", "£230,000", "$40,000", "$9,000", "€600", "$800,000"]

答案 1 :(得分:1)

需要正则表达式。这有效:

"$100,000£230,000$40,000$9,000$600$800,000".scan(/([^\d][0-9,]+)/)

    => [["$100,000"], 
["£230,000"], 
["$40,000"], 
["$9,000"], 
["$600"], 
["$800,000"]]

正则表达式包含以下部分:

  • [^\d]:匹配单个非数字的字符类。这将与货币符号匹配。
  • `[0-9,] +':另一个字符类,这次重复('+')。它匹配数字部分(0-9)加上千位分隔符。