2012-04-01 38 views
2

我想解析最後的印度貨幣,即來自字符串的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。在它前面。

盧比。或者R都會很好。我想獲得以Rs爲前綴的號碼。或者Rs

我該如何解析這個字符串。

+0

你總是想最右邊的數字? – joelparkerhenderson 2012-04-01 12:04:20

+0

我打算用這筆錢來創業板(https://github.com/collectiveidea/money)建議,但它似乎不支持RS,出乎我的意料。它非常以美國爲中心。 – d11wtq 2012-04-01 12:56:36

+0

@ d11wtq我只是在尋找解析一個字符串。爲什麼我需要一個寶石。此外,貨幣寶石是轉化爲貨幣的字符串。我不想轉換爲貨幣。再次檢查問題。 – 2012-04-01 14:40:43

回答

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

這是有問題一樣:S =「價格爲這個項目是100.2盧比至125.4。」將返回125.4,但在這種情況下,我想100.2 – 2012-04-01 12:01:09

+0

@MohitJain不按照你上面的例子。 _這個項目的價格是盧比。 100.2到盧比。 125.4 - > 125.4_ – 2012-04-01 12:02:18

+0

你的問題說:「價格爲這個項目是100.2盧比至125.4。」 - > 125.4(或者你能解釋一下你想要什麼?) – joelparkerhenderson 2012-04-01 12:03:50

1

我會使用類似

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

scan方法返回包含所有匹配的號碼的數組(因爲\d+的)。並且你總是希望最後找到的真實數字(語句四)你實際上想要數組中的最後一個元素。

這也將允許案例#3,你有浮動。

+0

請檢查情況#5 – 2012-04-01 12:51:52

+0

5號解析就好:) – Ekampp 2012-04-02 05:55:39

+0

Joelparkhenderson的解決方案是更優雅,因爲它考慮了貨幣的「RS」的一部分。 – Ekampp 2012-04-02 05:57:04