在文件名中的扩展名前插入一个字符串

Jas*_*yan 19 javascript string split

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

../Course/Assess/Responsive_Course_1_1.png
Run Code Online (Sandbox Code Playgroud)

对此:

../Course/Assess/Responsive_Course_1_1_large.png
Run Code Online (Sandbox Code Playgroud)

zia*_*aab 36

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

filename = filename.replace(/(\.[\w\d_-]+)$/i, '_large$1');
Run Code Online (Sandbox Code Playgroud)

  • 如果文件名没有扩展名,则不起作用,请在下面查看我的答案以获取适用于**所有**情况的解决方案 (2认同)

Por*_*rco 19

使用javascript lastIndexOf,类似于:

var s = "Courses/Assess/Responsive_Cousre_1_1.png";
var new_string = s.substring(0, s.lastIndexOf(".")) + "_large" + s.substring(s.lastIndexOf("."));
Run Code Online (Sandbox Code Playgroud)

  • 这种方法比基于正则表达式的方法更快(不足为奇).对于100000000个元素:正则表达式:41s lastIndexOf:15s (2认同)

Mar*_*ria 14

如果文件没有扩展名,则所有答案都无效.这是适用于所有情况的解决方案.

function appendToFilename(filename, string){
    var dotIndex = filename.lastIndexOf(".");
    if (dotIndex == -1) return filename + string;
    else return filename.substring(0, dotIndex) + string + filename.substring(dotIndex);
} 
Run Code Online (Sandbox Code Playgroud)

  • 问题不是关于在扩展之前附加吗?如果没有文件扩展名连接字符串与文件名。生活很简单不是吗? (2认同)
  • @Kamran 不,生活并不简单。正如一位开发人员曾经说过的:让程序做它必须做的事情很容易。困难的部分是让它不做不该做的事。 (2认同)

Par*_*kar 5

var s = '../Course/Assess/Responsive_Course_1_1.png'
s.replace(/\.png$/, '_large.png');
Run Code Online (Sandbox Code Playgroud)

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

更新:

更通用的方法是这样的:

var s = '../Course/Assess/Responsive_Course_1_1.png';
s.replace(/(\.[^\.]+)$/, '_large$1');
Run Code Online (Sandbox Code Playgroud)

  • 但这正是他所要求的。现在,如果我是你,我会这么说:_是的,他只要求 png。但他并没有说他不想要一个通用的解决方案!_。好的,我会更新的。:) (2认同)