String#to_i没有匹配项

时间:2012-09-22 15:48:41

标签: ruby string casting

当字符串与任何数字字符都不匹配时,

String#to_i会返回0,我知道包括我在内的很多人都认为这不自然,并希望在这种情况下返回nil 。但是Matz设计了它。区分实际为"0"(或"00"等)的字符串与不包含数字字符的字符串的最佳方法是什么?

2 个答案:

答案 0 :(得分:4)

使用:

Integer('')                         # =>  #<ArgumentError: invalid value for Integer: ""> 
Integer('0')                       # => 0  

答案 1 :(得分:0)

i = s.to_i ; i = nil if i == 0 && s != '0'这样的东西。如果你经常需要它 - 要么是monkeypatch to_i,要么只是添加better_to_i。