2016-09-02 13 views
1

私は特定の文字 スプリットURL - Rubyは

/ことにより、次の文字列を分割するが、無視して行くために最善の方法を思っていたので、私の文字列(うまくURL)は、この

url = http://10.0.3.2/i/av/Genymotionvbox86p/android/10~3~1/0/-/-/a3306aa6~0346~4ad5~bdf5~1bc7c20a88ab/0/test~page/-/-/video/live/-/one_hd/-/0/1/0~0/-/0~0/0~0/?trace=skwthffdsy 

のようになります。私はhttp://と最後のクエリ文字列を無視し/によって分割したい、望ましい結果は次のようになり

["i", "av", "Genymotionvbox86p", "android", "10~3~1", "0", "-", "-", 
    "a3306aa6~0346~4ad5~bdf5~1bc7c20a88ab", "0", "test~page", "-", "-", 
    "video", "live", "-", "one_hd", "-", "0", "1", "0~0", "-", "0~0", "0~0"] 

だから今はurl.split('/')私はこれまで排除または特定の文字を私をつかまえます

多分scan私をより良く役立つでしょうか?

すべてのヘルプは、おそらくこのような何かを

おかげ

+0

URLは常にその形式であることを知っていますか? 「http(s)://」は常に表示されますか?終わりにparamsの前には常に "/"が付きますか? 'url.split( '/')[3 ..- 2]'は簡単な解決策ですが、多くのURLフォーマットではうまくいかないでしょう。 –

+0

はい、URLは常にその形式にする必要があります。私は、httpがどこにでも出現する時を想定していません。私はURLを取った後、 'gsub'を使って私が望んでいないものを取り除くことを考えましたが、文字列にパラメータを追加した後、解決策はまだ動作するようです。 – Richlewis

+0

あなたは確かですか!! !! ..." www.google。 com/search?q = example "は有効なURLで、これらのいずれのプロパティもありません。 'split( '/')[3 ..- 2]'メソッドはこれで失敗します。 –

答えて

5

前1はこれを試してみてください意味:

require 'uri' 
URI(url).path.sub(%r{^/}, "").split("/") 

編集:なぜ短くて高速なsubが完全に良い場合にgsubを使用しますか?

1

を高く評価しましたか?

url.split('/')[3..-2] 

[3..-2]配列の範囲を意味し、それがインデックス-2

-2 

にインデックス3からすべての要素を取り、最後

+0

ありがとう、あなたは '[3 ..- 2]'を説明してもらえますか? – Richlewis

+0

http://ruby-doc.org/core-2.3.1/Arrayhtml#method-i-5B-5D –

+0

参照: 'ary [range]' –