【发布时间】:2012-08-29 20:31:33
【问题描述】:
我必须使用 String.scan 函数,如果没有匹配则返回空数组。
我想用扫描函数分配一个变量并检查它是否匹配,但不幸的是我不能这样做,因为它不会在不匹配时返回 nil 或 false。
我想这样做(1 行):
if ip = str.scan(/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/)
...
#use ip
end
但是因为它不会在没有匹配的情况下返回 nil,所以我必须这样做:
ip_match = str.scan(/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/)
unless ip_match.empty?
#use ip
end
有没有更优雅的写法——能够同时进行赋值和清空检查,或者其他美化代码的方法?
谢谢
【问题讨论】:
-
您的 ip 验证器似乎是每周结帐stackoverflow.com/questions/3756184/rails-3-validate-ip-string
标签: ruby