Вставьте строку перед расширением в имени файла - программирование
Подтвердить что ты не робот

Вставьте строку перед расширением в имени файла

Как вставить строку перед расширением в имени файла изображения? Например, мне нужно преобразовать это:

../Course/Assess/Responsive_Course_1_1.png

:

../Course/Assess/Responsive_Course_1_1_large.png
4b9b3361

Ответ 1

Если предположить, что расширение представляет собой любой ряд букв, цифр, подчеркивания или тире после последней точки в имени файла, тогда:

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

Ответ 2

Использовать javascript lastIndexOf, что-то вроде:

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

Ответ 3

Ни один из ответов не работает, если файл не имеет расширения. Здесь решение, которое работает для всех случаев.

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

Ответ 4

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');

Ответ 5

Либо $ 1 соответствует имени файла без расширения, либо $ 2 соответствует расширению.

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

Ответ 6

для файлов без расширения и файлов включает в себя расширение. спасибо @paul!

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