我已经尝试了一个多小时,但始终无法找到正确的方法,尽管它可能很简单:
我有这样的东西:foo/bar/test.html
我想使用jQuery提取最后一个/
之后的所有内容。在上面的例子中,输出将是test.html
。
我猜可以使用substr
和indexOf()
来完成,但我找不到可行的解决方案。
我已经尝试了一个多小时,但始终无法找到正确的方法,尽管它可能很简单:
我有这样的东西: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,所以会得到 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 中,lastIndexOf
/substring
的解决方案 可能 是最有效的(尽管在谈论 JavaScript 性能时必须非常小心,因为引擎之间差异很大),但除非您需要在循环中执行数千次此操作,否则这并不重要,建议优先考虑代码的清晰易懂性。
试试这个:
const url = "files/images/gallery/image.jpg";
console.log(url.split("/").pop());
你不需要使用jQuery,有许多方法可以实现它,例如:
var parts = myString.split('/');
var answer = parts[parts.length - 1];
当 myString 包含你的字符串时。
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("/"); alert(tmp.pop());解释:以上代码使用JavaScript语言,将字符串"foo/bar/test.html"通过"/"分割为数组,并弹出最后一个元素"test.html",然后通过弹出框(alert)输出。
当我知道字符串会比较短时,我会使用以下的一行代码(请记得转义反斜杠)
// if str is C:\windows\file system\path\picture name.jpg
alert( str.split('\\').pop() );
弹出一个带有 图片名.jpg
的警告框
这可能是一个老旧的帖子,但我偶然发现了更好的选项:
var str = "foo/bar/test.html";
alert(str.split('/').pop());
// output will be: test.html
string.substring(start,end)
作用
start = 必需
。提取开始的位置。第一个字符的索引为0。
end = 可选
。提取结束的位置(但不包括该位置)。如果省略,则提取字符串的其余部分。
var string = "var1/var2/var3";
start = string.lastIndexOf('/'); //console.log(start); o/p:- 9
end = string.length; //console.log(end); o/p:- 14
var string_before_last_slash = string.substring(0, start);
console.log(string_before_last_slash);//o/p:- var1/var2
var string_after_last_slash = string.substring(start+1, end);
console.log(string_after_last_slash);//o/p:- var3
或者
var string_after_last_slash = string.substring(start+1);
console.log(string_after_last_slash);//o/p:- var3
String path ="AnyDirectory/subFolder/last.htm";
int pos = path.lastIndexOf("/") + 1;
path.substring(pos, path.length()-pos) ;
As required in Question::
var string1= "foo/bar/test.html";
if(string1.contains("/"))
{
var string_parts = string1.split("/");
var result = string_parts[string_parts.length - 1];
console.log(result);
}
针对在URL上提出的问题(仅请求一个'='符号之后的内容):
[https://dev59.com/aIDba4cB1Zd3GeqPFYdo][1]
var string1= "Hello how are =you";
if(string1.contains("="))
{
var string_parts = string1.split("=");
var result = string_parts[string_parts.length - 1];
console.log(result);
}