获取 JavaScript 中最后一个斜杠后面的字符串的值

2022-08-30 02:18:22

我已经尝试了一个多小时,但无法找出正确的方法,尽管这可能很容易:

我有这样的东西:foo/bar/test.html

我想使用jQuery在最后一个之后提取所有内容。在上面的示例中,输出将为 。/test.html

我想可以使用 和 来完成,但我找不到有效的解决方案。substrindexOf()


答案 1

至少三种方式:

正则表达式:

var result = /[^/]*$/.exec("foo/bar/test.html")[0];

...它在字符串()的末尾显示“抓取不包含斜杠的一系列字符”()。然后,它通过索引从返回的匹配对象中获取匹配的字符();在匹配对象中,第一个条目是整个匹配字符串。无需捕获组。[^/]*$[0]

实际示例

使用和 :lastIndexOfsubstring

var str = "foo/bar/test.html";
var n = str.lastIndexOf('/');
var result = str.substring(n + 1);

lastIndexOf 做它听起来像它所做的事情:它查找字符串中最后一次出现的字符(好吧,字符串)的索引,如果未找到,则返回 -1。十次中有九次你可能想要检查该返回值(),但是在上面,由于我们向其添加1并调用子字符串,因此我们最终会只返回字符串。if (n !== -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使用给定的分隔符拆分字符串,返回数组。

/ 解决方案可能是最有效的(尽管人们总是必须小心地谈论JavaScript和性能,因为引擎彼此之间差异如此之大),但除非你在循环中这样做数千次,否则这并不重要,我会努力使代码清晰。lastIndexOfsubstring


答案 2

试试这个:

const url = "files/images/gallery/image.jpg";

console.log(url.split("/").pop());