to_i方法不转换字符串

时间:2015-12-07 13:27:18

标签: ruby watir

我得到的文字包含元素的总和:

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转换为整数?

3 个答案:

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