34

如何在图像文件名的扩展名之前插入字符串?例如,我需要转换它:

../Course/Assess/Responsive_Course_1_1.png

对此:

../Course/Assess/Responsive_Course_1_1_large.png
4

8 回答 8

42

如果我们假设扩展名是文件名中最后一个点之后的任何一系列字母、数字、下划线或破折号,那么:

filename = filename.replace(/(\.[\w\d_-]+)$/i, '_large$1');
于 2012-05-29T15:39:13.183 回答
28

如果文件没有扩展名,则所有答案都不起作用。这是适用于所有情况的解决方案。

function appendToFilename(filename, string){
    var dotIndex = filename.lastIndexOf(".");
    if (dotIndex == -1) return filename + string;
    else return filename.substring(0, dotIndex) + string + filename.substring(dotIndex);
} 
于 2015-07-03T11:34:55.340 回答
20

使用 javascript lastIndexOf,类似于:

var s = "Courses/Assess/Responsive_Cousre_1_1.png";
var new_string = s.substring(0, s.lastIndexOf(".")) + "_large" + s.substring(s.lastIndexOf("."));
于 2012-05-29T15:39:26.200 回答
5
var s = '../Course/Assess/Responsive_Course_1_1.png'
s.replace(/\.png$/, '_large.png');

这将完成这项工作。顺便说一句,这里是晚上。:)

更新:

更一般的方法是:

var s = '../Course/Assess/Responsive_Course_1_1.png';
s.replace(/(\.[^\.]+)$/, '_large$1');
于 2012-05-29T15:37:05.950 回答
0

$1 匹配没有扩展名的文件名或 $2 匹配扩展名。

filename = filename.replace(/^([^.]+)$|(\.[^.]+)$/i, '$1' + "_large" + '$2');
于 2019-01-21T01:46:19.440 回答
0

对于没有扩展名的文件和包含扩展名的文件。谢谢@paul!

filename = filename.replace(/^([^.]+)$|(\.[^.]+)$/i, '$1' + "-thumb" + '$2');

于 2019-09-18T05:25:28.907 回答
0

如果您不确定传入文件的扩展名是什么,那么这会有所帮助:

function renameFileA(imgUrl) {
  var extension = `.${imgUrl.split('.').pop()}`
  var [fileName] = imgUrl.split(extension);
  return `${fileName}_large${extension}`;
};

// this is clean but I don't understand what's going on till I do research ;)
function renameFileB(imgUrl) {
  return imgUrl.replace(/(\.[\w\d_-]+)$/i, '_large$1');
};

var valA = renameFileA('http//www.app.com/img/thumbnails/vid-th.png');
var valB = renameFileB('http//www.app.com/img/thumbnails/vid-th.jpg');

console.log('valA', valA);
console.log('valB', valB);

于 2020-04-22T11:15:27.007 回答
0

简单的正则表达式替换

filename = filename.replace(/(\.[^.]+)$/i, '_large$1')

于 2021-05-26T23:52:27.540 回答