2012-09-12 182 views
6

您好我有打出一個Ruby數組如下紅寶石小功能: -搜索紅寶石陣列,正則表達式表達式

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"] 

我需要使用我開始使用正則表達式表達,例如停止搜索

開始= 「/吶喊/」

停止= 「/奧拉/」

有沒有一種簡單的方法喲做到這一點的紅寶石?

回答

17

當然,方法index可以接收塊,這樣你可以做

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

你甚至可以檢查出漂亮的Ruby的「案例平等」運營商輕鬆地涵蓋字符串和正則表達式作爲參數:

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

然後,如果你傳遞一個正則表達式爲from,它將執行正則表達式匹配,如果你傳遞一個String,它會查找確切的字符串。

+0

棒極了!非常好。完美的作品。感謝您的反饋。 – user1513388

+4

@ user1513388如果解決了您的問題,請[接受答案](http://meta.stackexchange.com/a/5235)。 –