字符串未转换为整数

时间:2016-02-04 11:33:20

标签: ruby string integer

我想将表示为字符串的项目的价格转换为数字。这是我的代码:

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变量的定义有关?

2 个答案:

答案 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"

但是,使用gsubgsub!并不如以下任何一种快:

price.tr('£','')      # => "0.75"
price.delete('£')     # => "0.75"