2015-03-11 2 views
2

Давайте предположим, у меня есть URL, как это:Удалить отдельные части из URL

https://www.youtube.com/watch/3e4345?v=rwmEkvPBG1s

Что является лучшим и shorthest способ получить только 3e4345 часть? Иногда он не содержит дополнительных параметров в ? Я не хочу использовать какие-либо драгоценные камни.

Что я сделал:

url = url.split('/watch/') 
    url = url[1].split('/')[0].split('?')[0] 

Есть ли лучший способ? Спасибо

ответ

1

Вы можете сделать следующее и использовать функцию соответствия, чтобы найти соответствие на основе выражения регулярного выражения. Значение в [1] является первым захватом из регулярного выражения. Я включил разбивку с regexper.com, чтобы показать, что делает выражение.

Вы увидите круглые скобки вокруг \ d +, которые фиксируют цифры из URL, когда они совпадают.

url.to_s.match(/\/watch\/(\d+).*$/)[1] 

Regexper

+1

Совершенных но код может быть также строкой. Но код заканчивается на '/' или '?' Или ничего не уверен. Таким образом, это может быть: 'wer34/hello' или' wer34/'или' wer34? Locale = 3' или 'wer34'. Спасибо за вашу помощь! –

1
x = "https://www.youtube.com/watch/34345?v=rwmEkvPBG1s" 
File.basename(URI(x).path) 
=> "34345" 
Смежные вопросы