我有一个变量,它保存了一个相对链接,指向一张图片。这个图片链接的文件名可能有不同的长度。例如...
/v/vspfiles/assets/images/d-amazingamethyst.jpg
/v/vspfiles/assets/images/cdacarbon.jpg
我想从这个变量中提取出文件名,不包括.jpg扩展名和前面的路径。因此,上面的第一个示例应返回d-amazingamethyst。
最好使用Jquery答案,但纯JavaScript也可以。谢谢。
我有一个变量,它保存了一个相对链接,指向一张图片。这个图片链接的文件名可能有不同的长度。例如...
/v/vspfiles/assets/images/d-amazingamethyst.jpg
/v/vspfiles/assets/images/cdacarbon.jpg
我想从这个变量中提取出文件名,不包括.jpg扩展名和前面的路径。因此,上面的第一个示例应返回d-amazingamethyst。
最好使用Jquery答案,但纯JavaScript也可以。谢谢。
这将返回"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
从数组中删除最后一个元素,这将是文件扩展名,然后我使用.
连接所有内容。
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/
参考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