为什么当字符串包含数字时,Ruby的String#to_i有时会返回0?

时间:2012-01-07 10:04:55

标签: ruby string data-conversion

我只是在试用Ruby而且我遇到了String#to_i。假设我有这段代码:

var1 = '6 sldasdhkjas'
var2 = 'aljdfldjlfjldsfjl 6'

为什么puts var1.to_i6提供puts var2.to_i0输出{{1}}?

3 个答案:

答案 0 :(得分:29)

to_i方法返回由字符串的开头处的所有可解析数字形成的数字。你的第一个字符串以带数字开头,因此to_i返回,第二个字符串不以数字开头,所以返回0。 BTW,空格被忽略,因此" 123abc".to_i返回123。

答案 1 :(得分:8)

来自String#to_i的文档:

  

返回将str中的前导字符解释为整数

的结果

答案 2 :(得分:5)

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