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