从图像链接中提取文件名

4

我有一个变量,它保存了一个相对链接,指向一张图片。这个图片链接的文件名可能有不同的长度。例如...

/v/vspfiles/assets/images/d-amazingamethyst.jpg
/v/vspfiles/assets/images/cdacarbon.jpg  

我想从这个变量中提取出文件名,不包括.jpg扩展名和前面的路径。因此,上面的第一个示例应返回d-amazingamethyst。

最好使用Jquery答案,但纯JavaScript也可以。谢谢。

3个回答

2

jsFiddle上的方法

这将返回"file-only.my"

var x = "/v/whatever/file-only.my.jpg";
x = x.substring(x.lastIndexOf("/")+1, x.lastIndexOf("."));

从最后一个 / 的索引加1(文件名的开头)开始,获取子字符串,直到最后一个 . 的索引,切掉扩展名。您还可以使用 split 函数。
var x = "/v/whatever/file-only.my.jpg";
x = x.split("/");
x = x[x.length-1].split('.');
x.pop();
x.join(".");

但是你需要处理文件名中的点.,如果按索引0裁剪它将得到错误的文件名。

我使用.pop从数组中删除最后一个元素,这将是文件扩展名,然后我使用.连接所有内容。


我使用了第一个示例,它运行良好且相对简单明了。没有必要让它变得更加复杂。感谢您的回答!!! - user357034
看似简单的答案,+1(尽管+1部分是通过使用正则表达式获得的。我非常偏见这样的工具)=) - David Thomas

1
var v = "/v/vspfiles/assets/images/d-amazingamethyst.jpg";
var s = v.split("/");
var filename = s[s.length-1].split('.')[0];
alert(filename);

首先,我将字符串使用分隔符“/”拆分成数组。这样可以得到最后一个元素作为文件名。然后,我又根据“.”将最后一个元素拆分为文件名。

这是它的fiddle链接。http://www.jsfiddle.net/RFgRN/


1

参考jQuery中的正则表达式字段验证使用Hugoware答案的一种变体。

var phrase = "/v/vspfiles/assets/images/d-amazingamethyst.jpg";
var reg = new RegExp("\/\S+\/",i);
phrase = phrase.replace(reg, "");
alert(phrase);

除了使用正则表达式之外,还有其他的方法,但是正则表达式确实非常有用。掌握正则表达式是一项很好的技能。我总是使用在线验证工具来验证我的正则表达式。例如,这里有一个链接:http://www.regular-expressions.info/javascriptexample.html


虽然我同意你的观点,正则表达式解决方案总是有帮助的,但它往往让我感到头晕,哈哈,还是谢谢你提供的工具! - user357034

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接