开发者

URL manipulation: http://example.com/foo.jpg -> http://example.com/foo.preview.png

开发者 https://www.devze.com 2023-02-01 03:20 出处:网络
In rails I want to wrote some code to change this url string https://img.skitch.com/20101222-kg5chjx4jetgcdeaug46hi6jpk.jpg

In rails I want to wrote some code to change this url string

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

to

https://img.skitch开发者_运维技巧.com/20101222-kg5chjx4jetgcdeaug46hi6jpk.preview.png

Should I use regular Expression to change it?

I'm new to Regexp, anyone can show me how to do this, and how to learn this stuff

thanks


If the extension is of fixed length, you're better off using string slicing.

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

outputs

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

Or if your extensions are of variable length you can use rindex() to find the start of the extension.

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

outputs

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

If you must use a regex then do it like this:

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

outputs

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


If you're sure the file ends with .jpg, you can to

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

Otherwise, you can get the filename, then append the extension.

url = "https://img.skitch.com/20101222-kg5chjx4jetgcdeaug46hi6jpk.jpg"
ext = File.extname(url)
url.gsub(ext, ".preview{ext}")


A string replace seems to be enough. ".jpg" -> ".preview.png" Unfortunately I do not know ruby. In python it'll be

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

I think that it'll be similar in ruby. It seems to be sub() instead.

new_url = url.sub(".jpg",".preview.png")
0

精彩评论

暂无评论...
验证码 换一张
取 消