you can try the following:
["454,54$", "Rs566.33", "discount 88,0$", "some string"].each do |str| # making sure the string actually contains some float next unless float_match = str.scan(/(\d+[.,]\d+)/).flatten.first # converting matched string to float float = float_match.tr(',', '.').to_f puts "#{str} => %.2f" % float end # => 454,54$ => 454.54 # => Rs566.33 => 566.33 # => discount 88,0$ => 88.00
user904990
source share