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

hsi*_*nxh 15 ruby string data-conversion

我只是尝试Ruby而且遇到了String#to_i.假设我有这个代码:

var1 = '6 sldasdhkjas'
var2 = 'aljdfldjlfjldsfjl 6'
Run Code Online (Sandbox Code Playgroud)

给出时为什么puts var1.to_i输出?6puts var2.to_i0

Dar*_*ust 31

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

  • 这不完全正确 - 它将通过空白字符进行解析."123".to_i将评估为123,就像以制表符开头的字符串一样. (2认同)

Gar*_*eth 9

从以下文档String#to_i:

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


png*_*png 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
Run Code Online (Sandbox Code Playgroud)