在rails中我想写一些代码来改变这个url字符串
https://img.skitch.com/20101222-kg5chjx4jetgcdeaug46hi6jpk.jpg
到
https://img.skitch.com/20101222-kg5chjx4jetgcdeaug46hi6jpk.preview.png
我应该使用正则表达式来改变吗?
我是Regexp的新手,任何人都可以告诉我如何做到这一点,以及如何学习这些东西
感谢
答案 0 :(得分:4)
如果扩展名是固定长度的,那么最好使用string slicing。
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]
输出
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 :(得分:4)
如果您确定文件以.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}")
答案 2 :(得分:1)
字符串替换似乎就足够了。 “.jpg” - > “.preview.png” 不幸的是我不知道红宝石。 在python中它将是
new_url = url.replace(".jpg",".preview.png",1)
我认为它在红宝石中会有类似之处。它似乎是sub()
。
new_url = url.sub(".jpg",".preview.png")