使用Ruby短手正则表达式语法捕获字符串中的float

时间:2013-11-26 06:50:53

标签: ruby regex

我有一个Ruby字符串,其中包含我希望转换为浮点数的金额。我找到了一个从字符串中提取浮点数的简写语法:

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

现在我意识到当数字中有逗号时它不起作用:

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

如何在保持语法尽可能简洁的同时更改此正则表达式的语法以排除逗号?

4 个答案:

答案 0 :(得分:1)

您可以先使用String#delete

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

p "$1,023.45".delete(",$").to_f #=> 1023.45

答案 3 :(得分:0)

这个正则表达式应该完成这项工作[/ \ d + [,。] \ d + /]

[。,]表示或。可能在那个位置

更新:我认为你的意思是代替。像eropeans一样。所以这可能不适合你。您应该首先删除逗号,以避免出现1,234.56的情况,就像其他人所说的那样。直接使用正则表达式无法解决这个问题。