2012-09-12 7 views
6

を表現こんにちは、私は次のように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"] 

スタート= "/エール/"

停止= "/オラ/"

ヨーヨーはRubyでこれを行う簡単な方法はありますか?もちろん

答えて

17

あなたは

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

を行うことができるように、この方法indexは、ブロックを受け取ることができますあなたも素敵なルビーの「ケースの平等」演算子をチェックアウトし、簡単に引数として文字列と正規表現の両方をカバーすることができます

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)してください。 –