ファイル名の拡張子の直前に文字列を追加したい画像ファイルがあります。
例:example.png
に変わりますexample-2x.png
-2x
したがって、拡張子の直前に挿入したいのですが、ほぼすべての画像タイプ(png、jpg、gifなど)になります。
Ruby でこれを簡単に行う方法があれば、すばらしいことです。
これはうまくいくようです
img[/(\.\w+)/] = "-2x#{$1}"
img1 = 'foo.png'
img1[/(\.\w+)/] = "-2x#{$1}"
img1 #=> "foo-2x.png"
img2 = 'foo.bar.jpg'
img2[/(\.\w+)/] = "-2x#{$1}"
img2 #=> "foo-2x.png.jpg"
basename と extname を使用して、必要な 2 つの部分を抽出します。
def insert_before_last_dot(str, part)
idx = str.rindex('.')
return str if (idx.nil? || idx==0)
str.clone.tap { |x| x[idx] = part.to_s + '.' }
end
insert_before_last_dot('foo.jpg', '-2px') # => "foo-2px.jpg"
insert_before_last_dot('foo.bar.jpg', '-2px') # => "foo.bar-2px.jpg"
insert_before_last_dot('foo') # => "foo"
これが私がやったことで、ほとんどすべてのファイルタイプでうまく機能するようです。
image = 'example.png'
ext = File.extname(image)
image_2x = image.gsub(ext, "-2x"+ext)
私自身はルビーを知りませんがstring.lastIndexOf()
、Javaにはある種のようなものがあると思います。したがって、基本的には最後のドットを見つけて、その周りで文字列を分割し、それを-2x
> "example.png".gsub /\.[^\.]*$/, "-2x\\0"
=> "example-2x.png"