嗨,我有一个小的ruby函数,分割出一个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"]
Run Code Online (Sandbox Code Playgroud)
我需要在我的开始使用正则表达式并停止搜索,例如
开始="/大喊/"
停止="/ Ora /"
有没有一种简单的方法在Ruby中做到这一点?
Mla*_*vić 17
当然,方法index可以接收一个块,这样你就可以做到
sidx = arr.index{|e| e =~ from }
Run Code Online (Sandbox Code Playgroud)
您甚至可以查看Ruby的'case equality'运算符,并轻松地将字符串和正则表达式作为参数覆盖:
sidx = arr.index{|e| from === e} # watch out: this is not the same as 'e === from'
Run Code Online (Sandbox Code Playgroud)
然后,如果你传递一个正则表达式from,它将执行正则表达式匹配,如果你传递一个String,它将寻找精确的字符串.