2

我有一组不同的图像 url,我需要用“/xl_”替换“/s_”。我尝试了许多不同的方法,但它们似乎都没有像我期望的那样工作。这是我的最新版本:

available_images.each do |img|
    img.gsub(/.*(\/s_).*\.jpg/, "\/xl_")
end

available_images 是包含多个字符串的数组(当然匹配提供的正则表达式: .*(/s_).*.jpg )。关于如何解决这个问题的任何想法?

提前致谢!

4

1 回答 1

1

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_'.

于 2013-08-15T08:46:27.600 回答