使用jQuery将filename中的最后一个字符替换为不同的字符

时间:2013-10-21 16:59:35

标签: jquery image replace find

我正在构建一个简单的查找和替换脚本,如果它存在于同一目录中,则会找到更大版本的图像。

我似乎无法正确行事或似乎无法正常工作。

如果我有一个小图片,我希望jQuery用更大的版本替换它。

小图片示例:

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

用小号替换小版本的大图像示例:

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

所以它只是用'L'代替'S',这在整个我的图像中是相对的。这始终是文件扩展名之前url的最后一个字符。

我不是在寻找'质量'替换'S'和'L',因为提供的一些图像文件名包含字母'L'和&amp;在'内'。这只是最后一个角色。

到目前为止,我已经把它添加到了最后......但是我似乎无法删除'S'。

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

我尝试使用'切片',但无法让它工作。任何想法我都会非常感激。

5 个答案:

答案 0 :(得分:1)

您可以使用正则表达式将'S'替换为'L'

"/images/sub/1234S.jpg".replace(/S.jpg$/, 'L.jpg')

答案 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  ;

答案 2 :(得分:0)

如果您确定所有图片都有3个字母的扩展名,则可以这样做:

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

(基本上,只需将...images[i].src.length - 4...替换为...images[i].src.length - 5...。)

对于更“强大”的解决方案(例如,考虑多种文件类型和可变扩展名长度),您可以使用 regular expression

var regex = /S(\.[^\.]+)$/;
...
images[i].src.replace(regex, "L" + "$1");
...

答案 3 :(得分:0)

尝试

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

答案 4 :(得分:0)

鉴于HTML:

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

并且假设您希望在点击事件中的大图像和小图像之间进行更改:

$('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';
        });
    });
});