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

我只是尝试使用Ruby,我遇到了String#to_i 。 假设我有这个代码:

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

puts var2.to_i给出0时,为什么puts var1.to_i输出6

to_i方法返回由字符串开头的所有可解析数字形成的数字。 你的第一个字符串以一个数字开头,所以to_i返回,第二个字符串不以数字开头,所以返回0。 BTW,空格被忽略,因此" 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