我已经尝试了一个多小时,但还是想不出正确的方法,尽管这可能很简单:
我有这样的东西:foo/bar/test.html
我想使用 jQuery 提取最后一个 /
之后的所有内容。在上面的示例中,输出将是 test.html
。
我想这可以使用 substr
和 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 并调用 substring,所以我们d 最终执行 str.substring(0)
,它只返回字符串。
使用Array#split
Sudhir 和 Tom Walters 对此进行了报道 here和 here ,但只是为了完整性:
var parts = "foo/bar/test.html".split("/");
var result = parts[parts.length - 1]; // Or parts.pop();
split
使用给定的分隔符拆分一个字符串,返回一个数组。
lastIndexOf
/substring
解决方案可能是最有效的(尽管在谈论 JavaScript 和性能时总是要小心,因为引擎之间的差异如此之大),但除非您在循环中执行数千次,否则没关系,我会努力使代码清晰。
关于javascript - 获取 JavaScript 中最后一个斜杠后的字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8376525/