7

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

検索の開始と停止で正規表現を使用する必要があります。

開始 = "/Yell/"

停止 = "/Ora/"

Rubyでこれを行う簡単な方法はありますか?

4

1 に答える 1

19

もちろん、メソッドindexはブロックを受け取ることができるので、次のことができます

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

Nice Ruby の 'case equality' 演算子をチェックして、文字列と正規表現の両方を引数として簡単にカバーすることもできます。

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

次に、正規表現を として渡すと、正規from表現一致が実行され、 を渡すと、String正確な文字列が検索されます。

于 2012-09-12T09:59:16.790 に答える