我已经尝试了一个多小时,无法找到正确的方法,虽然这可能很容易:
我有这样的事情:foo/bar/test.html
我想使用jQuery在最后/
之后提取所有内容。在上面的示例中,输出将为test.html
。
我想可以使用substr
和indexOf()
来完成,但我找不到合适的解决方案。
答案 0 :(得分:188)
至少有三种方式:
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
执行它听起来的样子:它找到字符串中 last 出现的字符(井,字符串)的索引,如果找不到则返回-1。十分之九,你可能想要检查返回值(if (n !== -1)
),但在上面因为我们向它添加1并调用substring,我们最终会做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和性能,因为引擎的变化非常大彼此),但除非你在一个循环中这样做了数千次,否则无关紧要,我会努力澄清代码。
答案 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());