2012-04-01 4 views
2

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

Например:

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

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

Как я могу разобрать эту строку.

+0

Вы всегда хотите крайний правый ряд? – joelparkerhenderson

+0

Я собирался предложить использовать драгоценный камень Money (https://github.com/collectiveidea/money), но, похоже, он не поддерживает Rs, к моему удивлению. Это очень ориентировано на США. – d11wtq

+0

@ d11wtq Я просто ищу синтаксический анализ строки. Почему мне нужен камень? Кроме того, денежный камень должен скрываться в строке в валюте. Я не хочу скрывать валюту. Проверьте вопрос еще раз. –

ответ

5

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

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

Решение:

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 
+0

это имея вопрос, как: S = «Цена для этого товара Rs 100,2 до 125,4.» Вернется 125,4, но в этом случае я хочу 100,2 –

+0

@MohitJain Не по вашему примеру выше. _Цена для этого элемента - Rs. 100,2 до Rs. 125,4 -> 125.4_ –

+0

Ваш вопрос говорит, что «цена на этот пункт Rs 100,2 до 125,4.» -> 125,4 (или вы можете объяснить больше о том, что вы хотите?) – joelparkerhenderson

1

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

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

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

Это также позволит делу № 3, где у вас есть поплавки.

+0

пожалуйста, проверьте случай # 5 –

+0

Number 5 разбирает просто прекрасное решение :) – Ekampp

+0

Joelparkhenderson является более элегантным, как он принимает во внимание «РТС» часть валюты. – Ekampp

Смежные вопросы