使用Ruby短手regex语法捕获字符串中的浮点值



我有一个Ruby字符串,其中包含一个我想转换为浮点值的美元金额。我发现了一个从字符串中提取浮点值的简单语法:

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

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

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

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

您可以使用String#delete 首先删除逗号

"$1,023.45".delete(",")[/d+.d+/].to_f
#=> 1023.45
"$1,023.45".gsub(/[$,]/, '').to_f
# => 1023.45 
p "$1,023.45".delete(",$").to_f #=> 1023.45

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

[.,]是指,或。可能在的那个位置

更新:我以为你们的意思不是。就像外星人做的那样。所以这可能对你不起作用。你应该先删除逗号,以避免出现1234.56的情况,就像其他人所说的那样。这不能用regex直接解决。