我有一组不同的图像 url,我需要用“/xl_”替换“/s_”。我尝试了许多不同的方法,但它们似乎都没有像我期望的那样工作。这是我的最新版本:
available_images.each do |img|
img.gsub(/.*(\/s_).*\.jpg/, "\/xl_")
end
available_images 是包含多个字符串的数组(当然匹配提供的正则表达式: .*(/s_).*.jpg )。关于如何解决这个问题的任何想法?
提前致谢!
A gsub!
(!
因为您使用简单字符串(而不是正则表达式)执行 aeach
而不是 a map
)应该可以工作:
"path/to/s_image.jpg".gsub '/s_', '/xl_'
# => "path/to/xl_image.jpg"
更新
正如评论中所指出的,如果路径包含多次出现的'/s_'
.
"path/s_thing/s_image.jpg".gsub '/s_', '/xl_'
#=> "path/xl_thing/xl_image.jpg"
▲ ▲
Borodin发布了一个不错的简短正则表达式替换,在这种情况下有效:
"path/s_thing/s_image.jpg".sub %r|/s_(?!.*/)|, '/xl_'
#=> "path/s_thing/xl_image.jpg"
△ ▲
它只替换最后一次出现的'/s_'
.