Newbie của Ruby câu hỏi:Ruby: Là một chuỗi trong một danh sách các giá trị
Tôi hiện đang viết:
if mystring == "valueA" or mystring == "ValueB" or mystring == "ValueC"
là có một cách gọn gàng để làm điều này?
Newbie của Ruby câu hỏi:Ruby: Là một chuỗi trong một danh sách các giá trị
Tôi hiện đang viết:
if mystring == "valueA" or mystring == "ValueB" or mystring == "ValueC"
là có một cách gọn gàng để làm điều này?
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!
Làm thế nào 'bout
if %w(valueA valueB valueC).include?(mystring)
# do something
end
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
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. –
@glennjackman, Có phải đó là '/ \ Avalue (A | B | C) \ Z /' thay thế không? – jerhinesmith
vâng, thực sự. Nó không làm giảm khả năng đọc không may. –