Ruby on rails 一行中数字的测试变量
我在另一个网站上找到了这个代码 我不想使用方法返回true或false,而是希望在if语句中的一行中执行“is_numeric”测试。有人能解释一下这是否可能吗?当字符串变量为null和包含非数字字符时,我都会遇到错误Ruby on rails 一行中数字的测试变量,ruby-on-rails,ruby,Ruby On Rails,Ruby,我在另一个网站上找到了这个代码 我不想使用方法返回true或false,而是希望在if语句中的一行中执行“is_numeric”测试。有人能解释一下这是否可能吗?当字符串变量为null和包含非数字字符时,我都会遇到错误 if Float(string) * do something else * do something else end 如果Float()是无意义的代码,因为Float()将返回真实值或引发错误(根据我对-的有限了解,在编写时,您可以遵循中的代码路径)。我建议你问错了
if Float(string)
* do something
else
* do something else
end
如果Float()
是无意义的代码,因为Float()
将返回真实值或引发错误(根据我对-的有限了解,在编写时,您可以遵循中的代码路径)。我建议你问错了问题/看错了问题(了解你真正想要实现的目标会很有帮助)
要在一行上使用Float()
并避免破坏代码,请使用rescue
作为语句修饰符,就像在is\u number?
方法中所做的那样
Float(string) rescue 0.0 # trying to emulate String#to_f!
确保电话号码仅为10位数字非常简单
PHONE_NUM_LENGTH = 10
string.length == PHONE_NUM_LENGTH && string.count('0-9') == PHONE_NUM_LENGTH
将返回表示此检查的真/假值。这比正则表达式更有效
第一部分,
string.length == PHONE_NUM_LENGTH
检查字符串的长度是否为10个字符。第二,
string.count('0-9') == PHONE_NUM_LENGTH
检查它是否正好有10个数字字符。如果Float(string)rescue false,我看不出
true有什么问题。它似乎在做你要求的事情。我是否误解了这个问题?在本例中,您不能使用if
,因为类似Float(“blah”)
的内容会引发异常。@Kimball-我试图将if结构与这个Float(string)测试结合使用。在我的应用程序中,方法并不是一种干净的方法,一行就更好了。@Powers-这就是导致我提出这个问题的原因。方法结构对异常使用rescue。当使用if结构时,该如何传输?@La comadreja-是的,我正在测试数字字符,电话号码。我最终使用了一个正则表达式,但我希望用这种结构来增加我的武器库。regex可能是我使用电话号码的正确方法,但你永远不知道这个系统在哪里更有用。谢谢你,但这与最初的问题有很大的出入。我想知道浮子是否可以用鞋尖固定在if结构中。你说的“浮子可以用鞋尖固定在if结构中”是什么意思?我不明白用鞋尖固定需要什么。
if Float(string)
* do something
else
* do something else
end