Ответ 1
Если предположить, что расширение представляет собой любой ряд букв, цифр, подчеркивания или тире после последней точки в имени файла, тогда:
filename = filename.replace(/(\.[\w\d_-]+)$/i, '_large$1');
Как вставить строку перед расширением в имени файла изображения? Например, мне нужно преобразовать это:
../Course/Assess/Responsive_Course_1_1.png
:
../Course/Assess/Responsive_Course_1_1_large.png
Если предположить, что расширение представляет собой любой ряд букв, цифр, подчеркивания или тире после последней точки в имени файла, тогда:
filename = filename.replace(/(\.[\w\d_-]+)$/i, '_large$1');
Использовать javascript lastIndexOf, что-то вроде:
var s = "Courses/Assess/Responsive_Cousre_1_1.png";
var new_string = s.substring(0, s.lastIndexOf(".")) + "_large" + s.substring(s.lastIndexOf("."));
Ни один из ответов не работает, если файл не имеет расширения. Здесь решение, которое работает для всех случаев.
function appendToFilename(filename, string){
var dotIndex = filename.lastIndexOf(".");
if (dotIndex == -1) return filename + string;
else return filename.substring(0, dotIndex) + string + filename.substring(dotIndex);
}
var s = '../Course/Assess/Responsive_Course_1_1.png'
s.replace(/\.png$/, '_large.png');
Это выполнит эту работу. Кстати, здесь ночь.:)
UPDATE:
Более общий способ:
var s = '../Course/Assess/Responsive_Course_1_1.png';
s.replace(/(\.[^\.]+)$/, '_large$1');
Либо $ 1 соответствует имени файла без расширения, либо $ 2 соответствует расширению.
filename = filename.replace(/^([^.]+)$|(\.[^.]+)$/i, '$1' + "_large" + '$2');
для файлов без расширения и файлов включает в себя расширение. спасибо @paul!
filename = filename.replace(/^([^.]+)$|(\.[^.]+)$/i, '$1' + "-thumb" + '$2');