【发布时间】:2014-09-18 18:11:52
【问题描述】:
对于网络编程,数字以字符串形式出现。但是to_i 会将"5abc" 转换为5 和"abc" 转换为0,这两个都是错误的答案。为了抓住这些,我写道:
def number_or_nil( s )
number = s.to_i
number = nil if (number.to_s != s)
return number
end
有没有一种更简洁、更自然的方式来完成这种转换并检测字符串不是数字?
【问题讨论】:
-
' 5 '应该是5或nil? -
问题不清楚。
to_i有什么问题?什么是“这种转化”? -
nil 是我所期望的,虽然我可以忍受 5。
-
'5.0'或'5.1'怎么样?这些肯定是打算作为数字的,既然这就是你提出问题的方式,那么这些不应该也转换为整数吗? -
整数是我唯一关心的问题,谢谢。就个人而言,我觉得奇怪的是,“to_i”会愉快地只转换字符串的前导部分并愉快地将“abc”转换为零......但目前看起来这样做是出于毫无疑问的好理由.谢谢。
标签: ruby type-conversion