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

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

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

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

我想这可以做到使用 substrindexOf(),但我不能找到一个工作的解决方案。

262098 次浏览

尝试;

var str = "foo/bar/test.html";
var tmp = str.split("/");
alert(tmp.pop());

至少有三种方式:

正则表达式:

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并调用 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使用给定的分隔符拆分字符串,返回一个数组。

lastIndexOf/substring的解决方案是 可能吧最有效的(尽管在谈到 JavaScript 和性能时,人们总是不得不小心翼翼,因为引擎之间的差异是如此之大) ,但是除非你在一个循环中这样做了数千次,否则这并不重要,我会努力保持代码的清晰度。

你不需要 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));

当我知道字符串将相当短时,我使用下面的一行... (记住转义反斜杠)

// if str is C:\windows\file system\path\picture name.jpg
alert( str.split('\\').pop() );

picture name.jpg会弹出警报

String path ="AnyDirectory/subFolder/last.htm";
int pos = path.lastIndexOf("/") + 1;


path.substring(pos, path.length()-pos) ;

现在路径字符串中有了 最后

重量轻

string.substring(start,end)

哪里

开始提取的位置。第一个字符在索引0’处。

end = Optional.结束提取的位置(直到,但不包括)。如果省略,则提取字符串的其余部分。

    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

Jquery:

var afterDot = value.substr(value.lastIndexOf('_') + 1);

Javascript:

var myString = 'asd/f/df/xc/asd/test.jpg'
var parts    = myString.split('/');
var answer   = parts[parts.length - 1];
console.log(answer);

将’_’| |’/’替换为您自己的需要

根据问题的要求:

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 上的问题(只出现一次’=’) :
[ http://stackoverflow.com/questions/24156535/how-to-split-a-string-after-a-particular-character-in-jquery][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);
}

试试这个:

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


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

这可能是一条老线索,但我偶然发现了它,过了一会儿,我找到了一个更好的选择:

var str = "foo/bar/test.html";
alert(str.split('/').pop());
// output will be: test.html

你也可以试试这个:

var str = 'foo/bar/test.html';
var output = str.split('/');
var lastElement = output[output.length-1];
console.log(lastElement); //test.html

希望这可以帮助 ~ RDaksh