2016-09-02 77 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]' –