2

「/s_」を「/xl_」に置き換える必要があるさまざまな画像 URL の配列があります。さまざまな方法を試しましたが、どれも期待どおりに機能しないようです。これが私の最新バージョンです:

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

available_images は、いくつかの文字列を保持する配列です (もちろん、提供された正規表現と一致します: .*(/s_).*.jpg )。それを修正する方法について何か考えはありますか?

前もって感謝します!

4

1 に答える 1

1

gsub!(正規表現の代わりに) 単純な文字列を使用した ( a ではなく a を実行するため) は機能するはずです!eachmap

"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 に答える