我有图像文件,我想在文件名后面附加一个字符串,就在扩展名之前。
示例: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"
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)
使用 basename 和 extname 提取您想要的两个部分:
如果您在 Linux 环境中工作,该rename
功能应该可以工作。
rename {,\-2x,*}.png
在 tcsh 和 bash shell 中,这扩展为rename .png \-2x.png *.png
string.lastIndexOf()
我自己不知道 ruby,但我希望在 java中有某种类似的东西。所以你基本上只是找到最后一个点,将字符串拆分,然后将它与-2x
> "example.png".gsub /\.[^\.]*$/, "-2x\\0"
=> "example-2x.png"
我确信以上所有答案都比我的更合适,但我发现使用替换功能很有效......
目录 | 重命名项目 -NewName {$_.name -replace ".pdf"," - 2012.pdf"}
因此,您只需获取文件扩展名 .png 并将其替换为 -2x.png
这应该适用于任何文件扩展名,因为您只是用相同甚至不同的文件扩展名替换它,并在文件扩展名之前添加您想要的任何文本。