2012-09-12 131 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)。 –