删除网址的部分只保留文件名

时间:2013-05-07 14:32:41

标签: javascript string url replace lowercase

我想删除网址中的所有内容,只保留文件/图片的名称。 URL是动态输入/变量。

代码:

var str = "http://website.com/sudir/sudir/subdir/Image_01.jpg";
str = str.replace("http://website.com/sudir/sudir/subdir/", "")
         .replace(/[^a-z\s]/gi, ' ').replace("_", " ")
         .replace("subdir", "").toLowerCase().slice(0,-4);

5 个答案:

答案 0 :(得分:1)

此功能将为您提供文件名

function GetFilename(url)
{
   if (url)
   {
      var m = url.toString().match(/.*\/(.+?)\./);
      if (m && m.length > 1)
      {
         return m[1];
      }
   }
   return "";
}

答案 1 :(得分:1)

您可以使用lastIndexOf()轻松完成此操作:

var str = "http://website.com/sudir/sudir/subdir/Image_01.jpg";
str.substring(str.lastIndexOf("/") + 1)
//"Image_01.jpg"

答案 2 :(得分:0)

来自How to catch the end filename only from a path with javascript?

var filename = path.replace(/.*\//, '');

来自Getting just the filename from a path with Javascript

var fileNameIndex = yourstring.lastIndexOf("/") + 1;
var filename = yourstring.substr(fileNameIndex);

答案 3 :(得分:0)

我知道您没有指定确切的网址格式,以及在您的情况下这是否可行,但这可能是一个值得考虑的解决方案。

的Javascript

var str = "http://website.com/sudir/sudir/subdir/Image_01.jpg?x=y#abc";
console.log(str.split(/[?#]/)[0].split("/").slice(-1)[0]);

str = "http://website.com/sudir/sudir/subdir/Image_01.jpg";
console.log(str.split(/[?#]/)[0].split("/").slice(-1)[0]);

jsfiddle

答案 4 :(得分:0)

您可以随时使用Regex从字符串中提取数据: 正则表达式从URL中提取数据:

"http://website.com/sudir/sudir/subdir/(?<FileName>[0-9A-Za-z._]+)"