ruby-on-rails - URL 操作 : http://example. com/foo.jpg -> http ://example. com/foo.preview.png

标签 ruby-on-rails ruby regex

在rails中我想写一些代码来改变这个url字符串

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

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

我应该使用正则表达式来改变它吗?

我是 Regexp 的新手,任何人都可以告诉我如何做,以及如何学习这些东西

谢谢

最佳答案

如果扩展名是固定长度的,你最好使用 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

关于ruby-on-rails - URL 操作 : http://example. com/foo.jpg -> http ://example. com/foo.preview.png,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4518934/

相关文章:

ruby - 我可以通过控制台访问实例中的类变量吗?

php - 使用正则表达式从 php 中的字符串中提取文本

ruby-on-rails - 为什么 Ruby on Rails 没有内置标准的用户认证系统?

ruby-on-rails - Rails 3 路由问题

ruby - 如何与 `each` 迭代器中的前一项进行比较?

java - 缺少右括号

javascript - 如何用链接替换普通 URL,例如?

ruby-on-rails - Ruby on Rails:脚本/my_script与rake my_namespace:my_task

ruby-on-rails - 未定义的方法 it_behaves_like/it_should_behave_like/include_examples

html - 在 CSS 不起作用的情况下更改鼠标悬停的图像