开发者

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

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

上一篇:

下一篇:

精彩评论

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

最新问答

问答排行榜