我得到的文字包含元素的总和:
sum = browser.div(:class => 'single sort', :index => 0).div(:class, 'amount').text
然后我必须将sum
与另一个整数进行比较,但sum
仍然是一个字符串:
>> sum = browser.div(:class => 'single sort', :index => 0).div(:class, 'amount').text
=> "7 671 \u0420"
>> puts sum.class
String
>> sum.gsub!(/[^0-9]/, '')
=> "7671"
>> puts sum.class
String
>> sum.to_i
=> 7671
>> puts sum.class
String
如何将sum
转换为整数?
答案 0 :(得分:2)
您仍然需要将新值分配给sum
:
sum = sum.to_i
答案 1 :(得分:2)
您必须以这种方式覆盖结果:
sum = sum.to_i
如果您尝试转换非数字字符串,建议您使用Integer(sum)
代替.to_i
方法来引发异常。
nil.to_i = 0
"".to_i = 0
Integer("")
ArgumentError: invalid value for Integer(): ""
from (irb):1:in `Integer'
from (irb):1
from /Users/nico/.rvm/rubies/ruby-2.2.0/bin/irb:11:in `<main>'
答案 2 :(得分:2)
String#to_i
返回一个新的Object(这是唯一明智的实现;想一想如果String#to_i
神奇地改变了对象的类,会发生什么。)
因此,要将整数值分配给sum
变量,请使用
sum = sum.to_i
或(更好)为您的整数值引入一个新变量:
sum_as_integer = sum.to_i