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

IT技术 javascript substring indexof slash
2021-03-02 17:59:22

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

我有这样的事情: foo/bar/test.html

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

我想可以使用substrand来完成indexOf(),但我找不到可行的解决方案。

6个回答

至少三种方式:

一个正则表达式:

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。十有八九你可能想要检查返回值 ( 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和表现什么,因为发动机不同,所以从根本上相互),但除非你是在一个循环中这样做上千次,这不是没关系,我会努力使代码清晰。

您将如何调整它以在最后一个斜杠之前返回字符串?(即返回父文件夹的名称)
2021-05-17 17:59:22

你不需要 jQuery,有很多方法可以做到,例如:

var parts = myString.split('/');
var answer = parts[parts.length - 1];

其中 myString 包含您的字符串。

+1(用于工作)指出 jQuery 不是 javascript 问题的终极解决方案。
2021-05-09 17:59:22
这是一个有问题的解决方案,试试如果将斜杠添加到 slug 会发生什么?它返回 0。没有 slug 会发生什么?- 返回 NaN!卧槽?坏代码
2021-05-10 17:59:22
1) 问题与不为空的输入有关 2) 输入与以文件名结尾的输入有关(无斜杠) 3)接受的答案确实是一个更好的解决方案,因此获得了无数的赞成票 4)欢迎您添加自己的解决方案
2021-05-20 17:59:22

试试这个:

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

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

这个解决方案已经在接受的答案中,作为第三个可能的解决方案
2021-05-03 17:59:22
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());