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

r0s*_*kar 102 javascript substring slash indexof

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

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

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

我想它可以使用substr和完成indexOf(),但我找不到一个有效的解决方案.

T.J*_*der 216

至少有三种方式:

正则表达式:

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

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

实例

使用lastIndexOfsubstring:

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

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();
Run Code Online (Sandbox Code Playgroud)

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

lastIndexOf/ substring解决方案可能是最有效的(尽管人们总是要小心说关于JavaScript和表现什么,因为发动机不同,所以从根本上相互),但除非你是在一个循环中这样做上千次,这不是没关系,我会努力澄清代码.

  • 您将如何调整它以在最后一个斜杠之前返回字符串?(即返回父文件夹的名称) (2认同)

Tom*_*ers 27

你不需要jQuery,并且有很多方法可以做到这一点,例如:

var parts = myString.split('/');
var answer = parts[parts.length - 1];
Run Code Online (Sandbox Code Playgroud)

myString包含你的字符串.

  • +1(用于工作)指出 jQuery 不是 javascript 问题的终极解决方案。 (3认同)
  • 1) 问题与不为空的输入相关 2) 输入与以文件名结尾的输入相关(无斜杠) 3) 接受的答案确实是一个更好的解决方案,因此有大量的赞成票 4)欢迎您添加自己的解决方案 (2认同)

小智 18

尝试这个:

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

console.log(url.split("/").pop());
Run Code Online (Sandbox Code Playgroud)


kas*_*ega 12

var str = "foo/bar/test.html";
var lastSlash = str.lastIndexOf("/");
alert(str.substring(lastSlash+1));
Run Code Online (Sandbox Code Playgroud)


Sud*_*oti 6

尝试;

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


Dav*_*ger 6

当我知道字符串会很短时,我会使用以下一个衬里...(记住要转义反斜杠)

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

警报弹出 picture name.jpg