Парс индийской валюты из строки в рубине - PullRequest
2 голосов
/ 01 апреля 2012

Я хочу проанализировать последнюю индийскую валюту, т. Е. Rs, из строки.

Например:

  1. Цена за этот предмет - Rs.100 -> 100
  2. Цена за этот предмет - Rs.От 100 до рупий120 -> 120
  3. Цена за этот предмет - Rs.100,2 рупий125.4 -> 125.4
  4. Цена за этот предмет - Rs.От 100 до рупийinvalid_price -> 100
  5. Цена за этот предмет составляет Rs.От 100 до 125 -> 100, а не 125, потому что 125 имеет рупий.перед ним.

РТС.или Rs оба будут в порядке.Я хочу получить номер с добавлением рупий.или Rs

Как мне разобрать эту строку.

Ответы [ 2 ]

5 голосов
/ 01 апреля 2012

Цель - получить самое правое вхождение:

  • Текст "РТС"
  • Необязательный период сокращения "."
  • Пробел
  • Цифры и, возможно, десятичная точка и другие цифры

Решение:

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 голос
/ 01 апреля 2012

Я бы использовал что-то вроде

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

Метод scan возвращает массив, содержащий все совпадающие числа (из-за \d+). Кроме того, вы всегда хотите, чтобы последний найденный действительный номер (оператор четвертый) фактически вам нужен последний элемент в массиве.

Это также учитывает случай № 3, в котором у вас есть поплавки.

...