我有一个字符串作为参数传递给一个函数。这里,我想检查这个字符串是否只包含数字。所以我做了如下检查:
def check_string(string)
result = false
if string.to_i.to_s.eql? string
result = true
end
result
end
但是当字符串以0开头时,问题就出现了。在这种情况下,返回false。
check_string('123') #=> true
check_string('0123') #=> false
我该如何解决这个问题?
8条答案
按热度按时间oipij1gg1#
您可以尝试以下操作
如果string只包含数字或为空字符串,则为true。否则返回false。
jaql4c8m2#
一个数字可以是负数,也可以是浮点数。因此,如果这些都是允许的,请考虑以下解决方案:
一些评估为真输入
评估为假的输入
正如您所看到的,有几种情况可能应该得到支持,例如
'0.10'
,但实际上没有。在本例中,允许的输入是'0.1'
。vqlkdk9b3#
odopli944#
这是我的建议,用于检测它是否是浮点数
使用示例:
**编辑:**2023几年后,我发现这是最紧凑的解决方案:
4xy9mtcn5#
您可以使用Regexp:
smtd7mpg6#
我们也可以使用“match”函数来实现这一点。
match (String) - APIdock
krugob8w7#
我想我们应该用正则表达式来求这个。
如果选项.选项.匹配,则is_numeric = false(/[^0-9.]/)
doinxwow8#
如果有人正在寻找另一种方法来确定字符串是否为数字-〉,则使用"is_a?Numeric". Is_a? reference documentation
您还可以使用:
基本上它决定了一个类是否是类对象的类型,我刚刚发现了这个,我想分享一下。