繁体   English   中英

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

[英]Get value of a string after last slash in JavaScript

我已经尝试了一个多小时并且无法找出正确的方法,尽管它可能很容易:

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

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

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

至少三种方式:

一个正则表达式:

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 包含您的字符串。

尝试这个:

 const url = "files/images/gallery/image.jpg"; console.log(url.split("/").pop());

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

尝试;

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

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

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

弹出带有picture name.jpg警报picture name.jpg

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

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

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

重量轻

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

这可能是一个旧线程,但我偶然发现它并在一段时间后发现了一个更好的选择:

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

查询:

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

你也可以试试这个:

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

希望这可以帮助〜RDaksh

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM