Я просто пробовал Ruby и наткнулся на String#to_i
. Предположим, у меня есть этот код:
var1 = '6 sldasdhkjas'
var2 = 'aljdfldjlfjldsfjl 6'
Почему puts var1.to_i
выводит 6
, когда puts var2.to_i
дает 0
?
Я просто пробовал Ruby и наткнулся на String#to_i
. Предположим, у меня есть этот код:
var1 = '6 sldasdhkjas'
var2 = 'aljdfldjlfjldsfjl 6'
Почему puts var1.to_i
выводит 6
, когда puts var2.to_i
дает 0
?
Метод to_i
возвращает число, состоящее из всех поддающихся анализу цифр в начале строки. Ваша первая строка начинается с цифры, поэтому to_i
возвращает это, вторая строка не начинается с цифры, поэтому возвращается 0. Кстати, пробел игнорируется, поэтому " 123abc".to_i
возвращает 123.
Из документации для String#to_i
:
Возвращает результат интерпретации начальных символов в строке str как целое число.
Более исчерпывающие примеры to_i
:
irb(main):013:0* "a".to_i
=> 0
irb(main):014:0> "".to_i
=> 0
irb(main):015:0> nil.to_i
=> 0
irb(main):016:0> "2014".to_i
=> 2014
irb(main):017:0> "abc2014".to_i
=> 0
irb(main):018:0> "2014abc".to_i
=> 2014
irb(main):019:0> " 2014abc".to_i
=> 2014