![](/img/trans.png)
[英]How to extract last directory and file name from URL in javascript?
[英]How to extract a file name from an URI in javascript?
我有一個像這樣的 URL -
https://firebasestorage.googleapis.com/v0/b/sathyatest12-blog.appspot.com/o/85fa93fa-1ca7-4055-b6b3-6a41db4s498b-testcup1.png?alt=media&token=4dfd3ca0-a55b-4052-956c-94a2bs13c77e
其中我需要獲取文件名。 在這種情況下,
85fd93fa-1ca7-4055-b6d3-6a41db4s498b-testcup1.png
我嘗試按照其他答案中的建議使用正則表達式,但我無法編寫復雜的表達式。
我嘗試使用Coderholic 的 JavaScripts Good 部分,但它並沒有給我想要的東西。 我從那里找到了一個通用的正則表達式,我將其粘貼在下面
var parse_url = /^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/; var url = 'http://www.ora.com:80/goodparts?q#fragment'; var result = parse_url.exec(url); var names = ['url', 'scheme', 'slash', 'host', 'port', 'path', 'query', 'hash']; var blanks = ' '; var i; for (i = 0; i < names.length; i += 1) { document.writeln(names[i] + ':' + blanks.substring(names[i].length), result[i]); }
但這給了我
/v0/b/sathyatest12-blog.appspot.com/o/85fa93fa-1ca7-4055-b6b3-6a41db4s498b-testcup1.png
請幫忙。
為什么不簡單地使用URL API呢?
var URL_val = 'https://firebasestorage.googleapis.com/v0/b/sathyatest12-blog.appspot.com/o/85fa93fa-1ca7-4055-b6b3-6a41db4s498b-testcup1.png?alt=media&token=4dfd3ca0-a55b-4052-956c-94a2bs13c77e', URL_Obj = new URL(URL_val); let lastOne = URL_Obj.pathname.split('/').pop() console.log(`lastOne: ${lastOne}`)
我已經解決了這個問題,如下所示
var url_string = "https://firebasestorage.googleapis.com/v0/b/sathyatest12-blog.appspot.com/o/85fa93fa-1ca7-4055-b6b3-6a41db4s498b-testcup1.png?alt=media&token=4dfd3ca0-a55b-4052-956c-94a2bs13c77e"; //window.location.href
firstPos = url_string.lastIndexOf('/');
lastPos = url_string.indexOf('?');
var result = url_string.slice(firstPos+1, lastPos);
console.log(result);
我已經在 jsfiddle.net 上對此進行了測試
您也可以首先獲得相同的結果來反轉字符串,因為我們無法使用正則表達式找到/
的最后一個索引。 但是我們可以找到 的第一個索引?
如果我們可以反轉字符串。
const str = "https://firebasestorage.googleapis.com/v0/b/sathyatest12-blog.appspot.com/o/85fa93fa-1ca7-4055-b6b3-6a41db4s498b-testcup1.png?alt=media&token=4dfd3ca0-a55b-4052-956c-94a2bs13c77e"; const reverse = str.split("").reverse().join(""); const regex = /(?<=\?)(.*?)\//; const match = reverse.match(regex); if (match) { const result = match[1].split("").reverse().join(""); console.log(result); }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.