在JavaScript中使用斜杠后获取字符串的值

时间:2011-12-04 15:59:42

标签: javascript substring indexof slash

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

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

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

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

9 个答案:

答案 0 :(得分:188)

至少有三种方式:

正则表达式:

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

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

Live example

使用lastIndexOfsubstring

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

lastIndexOf执行它听起来的样子:它找到字符串中 last 出现的字符(井,字符串)的索引,如果找不到则返回-1。十分之九,你可能想要检查返回值(if (n !== -1)),但在上面因为我们向它添加1并调用substring,我们最终会做str.substring(0)返回字符串。

使用Array#split

Sudhir和Tom Walters对此进行了herehere,但仅仅是为了完整性:

var parts = "foo/bar/test.html".split("/");
var result = parts[parts.length - 1]; // Or parts.pop();

split使用给定的分隔符拆分字符串,返回一个数组。

lastIndexOf / substring解决方案可能效率最高(尽管人们总是要谨慎对待JavaScript和性能,因为引擎的变化非常大彼此),但除非你在一个循环中这样做了数千次,否则无关紧要,我会努力澄清代码。

答案 1 :(得分:24)

您不需要jQuery,并且有很多方法可以实现,例如:

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

myString包含你的字符串。

答案 2 :(得分:9)

var str = "foo/bar/test.html";
var lastSlash = str.lastIndexOf("/");
alert(str.substring(lastSlash+1));

答案 3 :(得分:5)

尝试;

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

答案 4 :(得分:2)

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

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

现在路径字符串中有 last.htm

答案 5 :(得分:1)

当我知道字符串将会合理地缩短时,我会使用下面的一个衬垫...(记得逃避反斜杠)

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

警告弹出picture name.jpg

答案 6 :(得分:1)

轻重量

2016-04-11 12:32:31.245 [Thread: main] DEBUG [com.demo.MyClass][] - Some sample string at DEBUG level....
2016-04-11 12:32:31.245 [Thread: main] INFO [com.demo.MyClass][] - Some sample string at INFO level....
2016-04-11 12:32:31.245 [Thread: main] WARN [com.demo.MyClass][] - Some sample string at WARN level....
2016-04-11 12:32:31.245 [Thread: main] ERROR [com.demo.MyClass][] - Some sample string at ERROR level....

,其中

string.substring(start,end) 。开始提取的位置。第一个字符位于索引0`。

start = Required。位置(最多但不包括)结束提取的位置。如果省略,则提取字符串的其余部分。

end = Optional

OR

    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

答案 7 :(得分:1)

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);

替换' _' || ' /'根据自己的需要

答案 8 :(得分:1)

尝试一下:

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

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