我已经尝试了一个多小时,但无法找到正确的方法,尽管这可能很容易:
我有这样的事情: foo/bar/test.html
我想使用 jQuery 提取最后一个/
. 在上面的示例中,输出将为test.html
.
我想可以使用substr
and来完成indexOf()
,但我找不到可行的解决方案。
我已经尝试了一个多小时,但无法找到正确的方法,尽管这可能很容易:
我有这样的事情: foo/bar/test.html
我想使用 jQuery 提取最后一个/
. 在上面的示例中,输出将为test.html
.
我想可以使用substr
and来完成indexOf()
,但我找不到可行的解决方案。
至少三种方式:
var result = /[^/]*$/.exec("foo/bar/test.html")[0];
...它表示“[^/]*
在字符串 ( $
)的末尾获取不包含斜杠的一系列字符” ( )。然后它通过索引它从返回的匹配对象中获取匹配的字符 ( [0]
); 在匹配对象中,第一个条目是整个匹配的字符串。不需要捕获组。
lastIndexOf
和substring
:var str = "foo/bar/test.html";
var n = str.lastIndexOf('/');
var result = str.substring(n + 1);
lastIndexOf
做它听起来像的事情:它在字符串中找到最后一次出现的字符(好吧,字符串)的索引,如果没有找到则返回 -1。十有八九你可能想要检查返回值 ( if (n !== -1)
),但在上面因为我们给它加 1 并调用子字符串,我们最终会做的str.substring(0)
只是返回字符串。
Array#split
Sudhir 和 Tom Walters 在这里和这里都有介绍,但只是为了完整性:
var parts = "foo/bar/test.html".split("/");
var result = parts[parts.length - 1]; // Or parts.pop();
split
使用给定的分隔符拆分字符串,返回一个数组。
该lastIndexOf
/substring
解决方案可能是最有效的(尽管人们总是要小心说关于JavaScript和表现什么,因为发动机不同,所以从根本上相互),但除非你是在一个循环中这样做上千次,这不是没关系,我会努力使代码清晰。
你不需要 jQuery,有很多方法可以做到,例如:
var parts = myString.split('/');
var answer = parts[parts.length - 1];
其中 myString 包含您的字符串。
试试这个:
const url = "files/images/gallery/image.jpg";
console.log(url.split("/").pop());
var str = "foo/bar/test.html";
var lastSlash = str.lastIndexOf("/");
alert(str.substring(lastSlash+1));
尝试;
var str = "foo/bar/test.html"; var tmp = str.split("/"); 警报(tmp.pop());