Получение имени файла без части ".jpg"

Хорошо, я использую slimbox2 и хочу, чтобы пользователь мог сохранить версию изображения в высоком разрешении. Добавление этого в файл.js позволяет сохранить ТОЧНОЕ изображение с ссылкой в ​​заголовке:

    // AUTOLOAD CODE BLOCK (MAY BE CHANGED OR REMOVED) 
    jQuery(function($) {
    $("a[rel^='lightbox']").slimbox({/* Put custom options here */}, function(el) {
    return [el.href, el.title + '<br /><a href="' + el.href + '">
    Download this image</a>'];
    }, function(el) {
            return (this == el) || ((this.rel.length > 8) && (this.rel == el.rel));
    });
    });

Однако я хочу, чтобы пользователь мог сохранить версию Hi-Res, просто добавив к имени "lg".

например, вместо загрузки "image1.jpg", который отображается, он загружает "image1lg.jpg"

Приведенный выше код использует el.href для загрузки изображения в ссылку, но если я использую + 'lg', он добавляет, что позади.jpg, поэтому я получаю "image1.jpglg", который не будет работать.

Есть ли способ получить могилу el.href, а затем вычесть из имени только ".jpg", а затем добавить "lg.jpg" к имени файла?

Надеюсь, что это имеет смысл, спасибо за время.

3 ответа

Решение

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

return [el.href, el.title + '<br /><a href="' + el.href.replace(/\.jpg$/i, 'lg.jpg') + '">Download this image</a>'];

Этот ответ не является окончательным, но он решает ваш конкретный вопрос.

Этот скрипт по существу не будет работать, если имя файла имеет более одного периода

Да есть джаваскрипт split() функция:

// The file
var string = 'filename.jpg'

// Split on periods
var parts = string.split('.');

// parts[0] = filename
// parts[1] = jpg

// Bring the string back together and add an 'lg' where needed
var new_string = parts[0]+'lg.'+parts[1];

Я бы использовал функцию замены в JavaScript. Вы можете сопоставить строковое или регулярное выражение и заменить его чем угодно, в этом случае сопоставив ".jpg" и заменив его "lg.jpg".

jQuery(function($) {
    $("a[rel^='lightbox']").slimbox({/* Put custom options here */}, function(el) {
        return [el.href, el.title + '<br /><a href="' + el.href.replace('.jpg', 'lg.jpg') + '"> Download this image</a>'];
    }, function(el) {
        return (this == el) || ((this.rel.length > 8) && (this.rel == el.rel));
    });
});
Другие вопросы по тегам