我想将表示为字符串的项目的价格转换为数字。这是我的代码:
puts price # => £0.75
price.gsub!(/[£]/,'')
puts price # => 0.75
"#{price}".to_i
puts price # => 0.75
price < 1 # => comparison of String with 1 failed (ArgumentError)
是否与price
变量的定义有关?
答案 0 :(得分:0)
你的"#{price}".to_i
没有做任何有意义的事情。它只是在代码中的该位置留下一个整数,并且不使用。如果你做price = price.to_i
,那么它可能会有效。
作为一般提示,当您想要查看正在发生的事情时,请使用p
而不是puts
。您使用puts
时很难在比较之前告诉price
仍然是一个字符串。如果您使用过p
,那么您就可以区分字符串和数字。
答案 1 :(得分:0)
您的代码是:
price = '£0.75'
price.gsub!(/[£]/,'') # => "0.75"
/[£]/
使用正则表达式是一种尴尬的方式,因为你创建了一组单个字符,可以更容易地写成:
price.gsub!(/£/,'') # => "0.75"
但是,使用gsub
或gsub!
并不如以下任何一种快:
price.tr('£','') # => "0.75"
price.delete('£') # => "0.75"