从红宝石中的字符串中解析印度货币

时间:2012-04-01 11:44:02

标签: ruby-on-rails ruby ruby-on-rails-3 string currency

我想解析最后一个印度货币,即字符串中的Rs。

例如:

  1. 此商品的价格是卢比。 100 - > 100
  2. 此商品的价格是卢比。 100到卢比。 120 - > 120
  3. 此商品的价格是卢比。 100.2卢比。 125.4 - > 125.4
  4. 此商品的价格是卢比。 100到卢比。 invalid_price - > 100
  5. 此商品的价格是卢比。 100至125 - > 100,而非125导致125具有Rs。在它面前。
  6. 卢比。或者Rs都没问题。我希望用Rs前面加上数字。或者Rs

    如何解析此字符串。

2 个答案:

答案 0 :(得分:5)

目标是最恰当的出现:

  • 文字“Rs”
  • 可选缩写句“。”
  • 空格
  • 数字和可选的小数点以及更多数字

解决方案:

s = "Price for this item is Rs. 100.2 to 125.4"
s.scan(/Rs.? (\d+\.\d+|\d+)/).last
#=> 102.2

s = "Price for this item is Rs. 100.2 to Rs. 125.4"
s.scan(/Rs.? (\d+\.\d+|\d+)/).last
#=> 125.4

答案 1 :(得分:1)

我会使用像

这样的东西

price = "Price for item is Rs. 100".scan(/(\d+\.\d+|\d+)/).flatten.last

scan方法返回一个包含所有匹配数字的数组(因为\d+)。而你总是想要最后找到的真实的号码(声明四)你实际上想要数组中的最后一个元素。

这也将允许情况#3,你有浮动。

相关问题