2015-12-07 4 views
0

я получить текст, содержащий сумму от элемента:to_i метод не преобразует строку

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 в целое число?

ответ

2

Вы все еще должны присвоить новое значение sum:

sum = sum.to_i 
+0

такой глупой ошибки, спасибо – 2500mA

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

String#to_i возвращает новый объект (который является единственной разумной реализацией, подумайте минутку о том, что произошел бы, если String#to_i волшебным образом изменился класс объекта).

Таким образом, чтобы присвоить целое значение для вашей sum переменной, используйте

sum = sum.to_i 

или (лучше) ввести новую переменную для целого значения:

sum_as_integer = sum.to_i 
Смежные вопросы