3

ファイル名の拡張子の直前に文字列を追加したい画像ファイルがあります。

例:example.pngに変わりますexample-2x.png

-2xしたがって、拡張子の直前に挿入したいのですが、ほぼすべての画像タイプ(png、jpg、gifなど)になります。

Ruby でこれを簡単に行う方法があれば、すばらしいことです。

4

9 に答える 9

2

これはうまくいくようです

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"
于 2013-06-13T19:06:54.190 に答える
1

basename と extname を使用して、必要な 2 つの部分を抽出します。

于 2013-06-13T19:01:40.047 に答える
1
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"
于 2013-06-13T19:05:23.693 に答える
1

これが私がやったことで、ほとんどすべてのファイルタイプでうまく機能するようです。

image = 'example.png'
ext = File.extname(image)
image_2x = image.gsub(ext, "-2x"+ext)
于 2013-06-13T19:29:43.970 に答える
0

私自身はルビーを知りませんがstring.lastIndexOf()、Javaにはある種のようなものがあると思います。したがって、基本的には最後のドットを見つけて、その周りで文字列を分割し、それを-2x

于 2013-06-13T19:02:32.440 に答える
0
> "example.png".gsub /\.[^\.]*$/, "-2x\\0"
=> "example-2x.png" 
于 2013-06-14T08:33:31.007 に答える