2013-04-30 69 views
-1

我有這個字符串:$29.99。我想刪除小數點.並用<sup>標記圍繞小數部分99$29<sup>99</sup>一個字符串的最後3個字符的Ruby正則表達式

雖然格式可以改變;小數點可以是逗號而不是點:,99

獎金:另外,一個正則表達式提取貨幣標籤,考慮到它可以是可變長度(R $,$,R等等)。

+0

什麼正則表達式你嘗試過這麼遠嗎? – 2013-04-30 13:24:25

+1

嘗試http://rubular.com/,很棒。 :) – alfa 2013-04-30 13:26:43

+0

我在努力,但我無法弄清楚如何得到最後3個字符。 – dee 2013-04-30 13:28:07

回答

2
str = '$29.99' 
result = str.gsub(/\.(\d+)$/, '<sup>\1<sup>') 
+2

-1由於OP請求不在Ruby中。 – 2013-04-30 13:47:33

+0

@CharlesCaldwell錯過了,添加了紅寶石版本。 – xdazz 2013-04-30 13:52:30

+0

太棒了!用upvote替代downvote。 – 2013-04-30 13:55:42

1
1.9.3p385 :012 > "$29.99".gsub(/(\.|,)/,'<sup>').concat("</sup>") 
=> "$29<sup>99</sup>" 

並提取貨幣:

1.9.3p385 :020 > ("USD>as$29.99" =~ /(.*?)\d.*/ ; $1) 
=> "USD>as$" 
1

這處理所有非紅利點方案:

1.9.3p392 :009 > "$29.99".gsub(/(\d+)[,.](\d+)/, "\\1<sup>\\2</sup>") 
=> "$29<sup>99</sup>" 
1.9.3p392 :010 > "$29,99".gsub(/(\d+)[,.](\d+)/, "\\1<sup>\\2</sup>") 
=> "$29<sup>99</sup>" 
1.9.3p392 :011 > "R$29,99".gsub(/(\d+)[,.](\d+)/, "\\1<sup>\\2</sup>") 
=> "R$29<sup>99</sup>" 
相關問題