Замените последний символ в имени файла другим символом, используя jQuery

0

Я создаю простой скрипт поиска и замены, который находит большую версию изображения, если он существует в том же каталоге.

Я не могу понять, что это правильно или, похоже, не работает.

Если у меня есть небольшое изображение, я хочу, чтобы jQuery заменил его более крупной версией.

Пример небольшого изображения:

<img src="/images/sub/1234S.jpg"/>

Пример большого изображения, чтобы заменить небольшую версию:

<img src="/images/sub/1234L.jpg" />

Итак, все, что нужно, это просто заменить "S" на "L", это относительное значение во всех моих изображениях. Это всегда последний символ url перед расширением файла.

Я не ищу "массовую" замену "S" на "L", поскольку некоторые предоставленные имена файлов содержат буквы "L" и "S" внутри. Это только последний символ.

У меня есть это до сих пор, что добавляет "L" до конца... но я не могу вычеркнуть "S".

var imageType = images[i].src.substr(-4);
var imageName = images[i].src.substr(0, images[i].src.length - 4);
imageName += "L" + imageType;

Я попытался использовать "срез", но не смог заставить его работать. Любые идеи я был бы очень благодарен.

  • 0
    Все нормально, я решил свой вопрос. Слишком поздно для меня :) var imageType = images [i] .src.substr (-4); var imageName = images [i] .src.substr (0, images [i] .src.length - 5); imageName + = "L" + imageType;
Теги:
find
image
replace

5 ответов

1

Вы можете использовать регулярное выражение для замены 'S' для 'L'

"/images/sub/1234S.jpg".replace(/S.jpg$/, 'L.jpg')
  • 0
    Должно быть \. '' это соответствует чему-либо
  • 0
    не будет работать для GIF, PNG
Показать ещё 1 комментарий
0

Пытаться

var len = images[i].src.lastIndexOf('.');
var imageType = images[i].src.substr(len);
imageName = images[i].src.substr(0,len-1)+'L'+imageType;
0

Если вы уверены, что все ваши изображения имеют 3-буквенное расширение, вы можете сделать это следующим образом:

var imageType = images[i].src.substr(-4);
var imageName = images[i].src.substr(0, images[i].src.length - 5);
imageName += "L" + imageType;

(Basicaly, просто заменив ...images[i].src.length - 4... с ...images[i].src.length - 5...)

Для более "надежного" решения (например, для учета нескольких типов файлов и длины расширения) вы можете использовать регулярное выражение:

var regex = /S(\.[^\.]+)$/;
...
images[i].src.replace(regex, "L" + "$1");
...
0
var imagePath = images[i].src;
var imageType = imagePath.src.substr(-4);
var withoutExtension = ID.substring(imagePath.lastIndexOf(".") + 1);
var final = withoutExtension  + "S" + imageType  ;
0

Учитывая HTML:

<img src="/images/sub/1234L.jpg" />

И презумпция, которую вы хотите изменить между большими и маленькими изображениями в событии click-event:

$('img').on('click', function(){
    $(this).prop(function(i,s){
        return s.replace(/(S|L)\.jpg$/,function(a){
            console.log(a);
            return (a === 'S' ? 'L' : 'S') + '.jpg';
        });
    });
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню