当前位置:  开发笔记 > 编程语言 > 正文

js函数从url获取文件名

如何解决《js函数从url获取文件名》经验,为你挑选了5个好方法。

我有一个像http://www.example.com/blah/th.html这样的网址

我需要一个javascript函数来给我'th'值.

我的所有网址都有相同的格式(2个字母的文件名,扩展名为.html).

我希望它是一个安全的功能,所以如果有人传入一个空的URL它不会破坏.

我知道如何检查长度,但我应该检查null是否正确?



1> 小智..:
var filename = url.split('/').pop()


如果后面有查询参数怎么办?
怎么样:url.split('#').shift().split('?').shift().split('/').pop()
到目前为止最简单和最好的答案.
@hayatbiralem你的回答是正确的:你必须先从清洁#和?开始 然后拆分/或者你将得到/ in querystring和anchors
这也不处理URL片段ID(即#ID)

2> Quidn..:

为什么这么难?

var filename = url.split('/').pop().split('#')[0].split('?')[0];


@hayatbiralem给出了另一个评论的更好答案:url.split('#').shift().split('?').shift().split('/').pop()你必须从分裂开始在#和?然后拆分/或者您将捕获锚点和查询字符串的/部分而不是路径中的部分(这通常会导致亚马逊s3受保护网址上的错误)

3> David Morton..:

使用匹配功能.

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


如果文件名中有多个'.',则不起作用

4> brandonjp..:

与其他人类似,但是......我使用过汤姆的简单脚本 - 一行,
然后你可以在任何地方使用文件名var:http:
//www.tomhoppe.com/index.php/2008/02/grab-文件名从-窗口的位置/

var filename = location.pathname.substr(location.pathname.lastIndexOf("/")+1);



5> Benjineer..:

考虑URL查询和哈希标识符的正则表达式解决方案:

function fileNameFromUrl(url) {
   var matches = url.match(/\/([^\/?#]+)[^\/]*$/);
   if (matches.length > 1) {
     return matches[1];
   }
   return null;
}

JSFiddle 在这里.

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有