jpw*_*ynn 16 ruby string comparison
我假设在红宝石中有一个很好的单行方式
if mystr == "abc" or "def " or "ghi" or "xyz"
Run Code Online (Sandbox Code Playgroud)
但在我通常咨询的在线参考文献中找不到如何做到这一点...
谢谢!
Phr*_*ogz 23
也许你不知道你可以在一个案例中加入多个条件:
case mystr
when "abc", "def", "ghi", "xyz"
..
end
Run Code Online (Sandbox Code Playgroud)
但对于这个特定的基于字符串的测试,我会使用正则表达式:
if mystr =~ /\A(?:abc|def|ghi|xyz)\z/
Run Code Online (Sandbox Code Playgroud)
如果您不想构造正则表达式,并且您不想要case
语句,则可以创建一个对象数组并使用Array#include?
test来查看该对象是否在数组中:
if [a,b,c,d].include?( o )
Run Code Online (Sandbox Code Playgroud)
或者,通过猴子修补Object,您甚至可以将它转过来:
class Object
def in?( *values )
values.include?( self )
end
end
if o.in?( a, b, c, d )
Run Code Online (Sandbox Code Playgroud)
sep*_*p2k 13
你可以Array#include?
像这样使用:
if ["abc", "def ", "ghi", "xyz"].include?(mystr)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12055 次 |
最近记录: |