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


112

我已经尝试了一个多小时,并且想不出正确的方法,尽管这可能很简单:

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

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

我猜可以使用substr和来完成indexOf(),但是我找不到可行的解决方案。

Answers:


243

至少三种方式:

正则表达式:

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并调用子字符串,因此最终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和表现什么,因为发动机不同,所以从根本上相互),但除非你是在一个循环中这样做上千次,这不是没关系,我会努力使代码清晰。


1
您将如何调整它以在最后斜杠之前返回字符串?(即返回父文件夹的名称)
wbadart

28

您不需要jQuery,并且有很多方法可以使用它,例如:

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

其中myString包含您的字符串。


3
+1(用于工作)指出jQuery并不是解决JavaScript问题的最终解决方案。
安德鲁·杰克曼

1
这是一个有问题的解决方案,尝试将斜杠添加到块中会发生什么情况?它返回0。那会不会发生什么?-返回NaN!wtf?错误的代码
Donatas Cereska 2014年

1)问题与不为空的输入有关2)输入与以文件名结尾的输入有关(无斜杠)3)可接受的答案确实是一个更好的解决方案,因此获得了很多赞成票4)欢迎您添加自己的解决方案
Tom Walters 2014年

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

9

尝试;

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

5

当我知道字符串会相当短时,则使用下面的一个衬里...(记住要避免反斜杠)

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

警报弹出 picture name.jpg


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

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

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


1

轻量

string.substring(start,end)

哪里

start = Required。开始提取的位置。第一个字符位于索引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

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

替换'_'|| '/'根据您的需要


1

根据问题的要求::

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

并在网址上询问问题(询问是否出现'=')::
[ 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);
  }

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.