2013-11-26 30 views
0

我有一個Ruby字符串,其中包含我想要轉換爲浮點數的美元金額。我發現了一個短手語法從字符串中提取浮動:使用Ruby短語正則表達式捕獲字符串中的浮點數

"$123.45"[/\d+\.\d+/].to_f 
# => 123.45 

現在我意識到,當有在數字後的逗號它不工作:

"$1,023.45"[/\d+\.\d+/].to_f 
# => 23.45 

如何改變這個正則表達式的語法來排除逗號,同時仍然保持語法儘可能簡潔?

回答

1

你可以先使用String#delete

"$1,023.45".delete(",")[/\d+\.\d+/].to_f 
#=> 1023.45 
+0

我不知道'String#delete'。謝謝! – Andrew

1
"$1,023.45".gsub(/[\$,]/, '').to_f 
# => 1023.45 
0

此正則表達式應該做的工作[/\d+[,.]\d+/]

[,]表示刪除逗號,要麼 。可能在那個位置

更新:我以爲你的意思,而不是。像eropeans一樣。所以這可能不適合你。您應該先刪除逗號,以避免像其他人所述的1,234.56情況。這不能直接用regex解決。

1
p "$1,023.45".delete(",$").to_f #=> 1023.45 
相關問題