【发布时间】:2017-01-10 10:02:31
【问题描述】:
我想知道如何最好地用/ 分割以下字符串,但忽略某些字符
所以我的字符串看起来像这样
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 会更好?
【问题讨论】:
-
您知道 URL 将始终采用这种格式吗? “http(s)://”会一直存在吗?最后的任何参数之前是否总是有一个“/”?
url.split('/')[3..-2]是一个简单的解决方案,但不适用于许多可能的 URL 格式。 -
是的,url
should总是采用这种格式,我无法想象 http(s) 会出现在其他任何地方。我考虑过获取 url,然后使用gsub删除我不想要的内容,但是在向字符串添加更多参数后,解决方案似乎仍然有效 -
Are you sure??!!...“www.google.com/search?q=example”是一个有效的 URL,它不具有这些属性。
split('/')[3..-2]方法将因此失败。 -
事实上,更更糟糕是查询参数也包含“/”!例如。 ""www.google.com/search?q=what/about/this" 使用
split方法会给您带来更糟糕的结果。 -
@TomLord: 好吧,来自 stdlib 的
URI在没有方案部分的情况下完全倒下。将域视为路径的一部分。
标签: ruby