2016-09-02 169 views
1

我想知道如何最好地去通過/分割以下字符串,但忽略某些字符分裂URL - 紅寶石

所以我的字符串(以及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)://」會一直存在嗎?在最後的任何參數之前是否總會有「/」? 'url.split('/')[3 ..- 2]'是一個簡單的解決方案,但不適用於很多可能的URL格式。 –

+0

是的,應該始終採用這種格式,我不能設想一下http(s)會出現在其他地方的時間。我想了解如何使用網址,然後使用'gsub'去除我不想要的內容,但是在爲字符串添加更多參數後,解決方案似乎仍然可以正常工作 – Richlewis

+0

Are you sure ?? !! ...「www.google。 com/search?q = example「是一個有效的URL,它沒有任何這些屬性。 'split('/')[3 ..- 2]'方法將失敗。 –

回答

5

一個嘗試這種情況:

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

編輯:爲什麼使用gsub時更短,更快sub完全正常。

1

也許這樣的事情?

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

[3..-2]裝置陣列的範圍,它需要從索引3所有元素索引-2

-2 

裝置之前最後

+0

謝謝,你能介意解釋'[3 ..- 2]'嗎? – Richlewis

+0

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

+0

請參閱:'ary [range]' –