我在另一个thread上找到了此代码。
def is_number? string
true if Float(string) rescue false
end
我没有使用方法返回true或false,而是希望这样做" is_numeric"在if语句中用一行测试。有人可以解释一下这是否可能?当字符串变量为空且包含非数字字符时,我现在都会收到错误。
if Float(string)
* do something
else
* do something else
end
答案 0 :(得分:1)
if Float()
是无意义的代码,因为Float()
将返回真值或引发错误(基于我对source code的有限看法 - 在写作时,您可以按照来自line #2942的代码路径。我建议你提出错误的问题/看错了问题(了解你实际想要实现的目标是有帮助的)。
要在一行上使用Float()
执行某些操作并避免破坏代码,请使用rescue
作为语句修饰符,如在is_number?
方法中所做的那样。
Float(string) rescue 0.0 # trying to emulate String#to_f!
答案 1 :(得分:0)
确保电话号码是10位数,仅限数字,非常简单。
PHONE_NUM_LENGTH = 10
string.length == PHONE_NUM_LENGTH && string.count('0-9') == PHONE_NUM_LENGTH
将返回表示此检查的true / false值。这比正则表达式更有效。
第一部分,
string.length == PHONE_NUM_LENGTH
检查字符串是否长度为10个字符。第二,
string.count('0-9') == PHONE_NUM_LENGTH
检查它是否只有10个数字字符。