Манипулирование URL: http://example.com/foo.jpg -> http://example.com/foo.preview.png - PullRequest
3 голосов
/ 23 декабря 2010

В рельсах я хочу написать некоторый код для изменения этой строки URL

https://img.skitch.com/20101222-kg5chjx4jetgcdeaug46hi6jpk.jpg

до

https://img.skitch.com/20101222-kg5chjx4jetgcdeaug46hi6jpk.preview.png

Должен ли я использовать регулярное выражение для его изменения?

Я новичок в Regexp, любой может показать мне, как это сделать, и как научиться этому

спасибо

Ответы [ 3 ]

4 голосов
/ 23 декабря 2010

Если вы уверены, что файл заканчивается на .jpg, вы можете

url = "https://img.skitch.com/20101222-kg5chjx4jetgcdeaug46hi6jpk.jpg"
url.gsub(".jpg", ".preview.jpg")

В противном случае вы можете получить имя файла, а затем добавить расширение.

url = "https://img.skitch.com/20101222-kg5chjx4jetgcdeaug46hi6jpk.jpg"
ext = File.extname(url)
url.gsub(ext, ".preview{ext}")
4 голосов
/ 23 декабря 2010

Если расширение имеет фиксированную длину, вам лучше использовать срез строки .

url = "https://img.skitch.com/20101222-kg5chjx4jetgcdeaug46hi6jpk.jpg"
print url[0..-5] + ".preview" + url[-4..-1]

*

https://img.skitch.com/20101222-kg5chjx4jetgcdeaug46hi6jpk.preview.jpg

Или если ваши расширенияпеременной длины вы можете использовать rindex(), чтобы найти начало расширения.

url = "https://img.skitch.com/20101222-kg5chjx4jetgcdeaug46hi6jpk.jpeg"
dot_index = url.rindex(".")-1
print url[0..dot_index] + ".preview" + url[dot_index+1..-1]

output

https://img.skitch.com/20101222-kg5chjx4jetgcdeaug46hi6jpk.preview.jpeg

Если вы должны использовать регулярное выражение, сделайте это следующим образом:

url = "https://img.skitch.com/20101222-kg5chjx4jetgcdeaug46hi6jpk.jpeg"
print url.gsub(/\.(\w{2,4})$/, ".preview.\\1")

выходы

https://img.skitch.com/20101222-kg5chjx4jetgcdeaug46hi6jpk.preview.jpeg
1 голос
/ 23 декабря 2010

Кажется, достаточно заменить строку. ".jpg" -> ".preview.png" К сожалению, я не знаю, рубин. В питоне это будет

new_url = url.replace(".jpg",".preview.png",1)

Я думаю, что это будет похоже на ruby. Кажется, вместо этого sub().

new_url = url.sub(".jpg",".preview.png")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...