2012-09-12 32 views
6

Hi tôi có chức năng ruby ​​nhỏ mà tách ra một mảng Ruby như sau: -Tìm kiếm của Ruby Mảng với Regex biểu thức

def rearrange arr,from,to 
    sidx = arr.index from 
    eidx = arr.index to 
    arr[sidx] = arr[sidx+1..eidx] 
end 

arr= ["Red", "Green", "Blue", "Yellow", "Cyan", "Magenta", "Orange", "Purple", "Pink", "White", "Black"] 
start = "Yellow" 
stop = "Orange" 

rearrange arr,start,stop 
puts arr.inspect 
#=> ["Red", "Green", "Blue", ["Cyan", "Magenta", "Orange"], "Cyan", "Magenta", "Orange", "Purple", "Pink", "White", "Black"] 

tôi cần sử dụng sử dụng một biểu thức regex trong đầu của tôi và dừng tìm kiếm ví dụ

Start = "/ Yell /"

Dừng = "/ Ora /"

Có một cách dễ dàng yo làm điều này trong Ruby?

Trả lời

17

Dĩ nhiên, phương pháp index có thể nhận được một khối, do đó bạn có thể làm

sidx = arr.index{|e| e =~ from } 

Bạn thậm chí có thể kiểm tra thoải mái Ruby hành 'bình đẳng trường hợp' và dễ dàng bao gồm cả dây và regexes như các đối số:

sidx = arr.index{|e| from === e} # watch out: this is not the same as 'e === from' 

Sau đó, nếu bạn vượt qua một regex là from, nó sẽ thực hiện đối sánh regex và nếu bạn vượt qua một String, nó sẽ tìm chuỗi chính xác.

+0

Thật tuyệt vời! Rất đẹp. Hoạt động hoàn hảo. Cảm ơn vì bạn đã phản hồi. – user1513388

+4

@ user1513388 Vui lòng [chấp nhận câu trả lời] (http://meta.stackexchange.com/a/5235) nếu giải quyết được sự cố của bạn. –

Các vấn đề liên quan