2010-01-21 9 views

Trả lời

34

Có hai cách:

RegEx:

if mystring =~ /^value(A|B|C)$/ # Use /\Avalue(A|B|C)\Z/ here instead 
    # do something    # to escape new lines 
end 

Hoặc, một cách rõ ràng hơn,

if ["valueA", "valueB", "valueC"].include?(mystring) 
    # do something 
end 

Hy vọng rằng sẽ giúp!

+0

Trong Ruby, bạn thực sự cần đạt cho neo \ A và \ Z trừ khi bạn chắc chắn chuỗi chứa số không có dòng mới. –

+0

@glennjackman, Có phải đó là '/ \ Avalue (A | B | C) \ Z /' thay thế không? – jerhinesmith

+0

vâng, thực sự. Nó không làm giảm khả năng đọc không may. –

5

Làm thế nào 'bout

if %w(valueA valueB valueC).include?(mystring) 
    # do something 
end 
1

Giả sử bạn muốn mở rộng chức năng này với các nhóm trận đấu khác, bạn cũng có thể sử dụng trường hợp:

case mystring 
when "valueA", "valueB", "valueC" then 
#do_something 
when "value1", "value2", "value3" then 
#do_something else 
else 
#do_a_third_thing 
end