如何在JavaScript中获取字符串的最后一部分?

65

我的链接看起来像这样:

http://www.example.com/category/action

我该如何获取“action”这个词呢?最后一个斜杠“/”后面的部分每次都不同,无论是“action”还是“adventure”等,我该如何始终获取最后一个斜杠后面的单词呢?


请在 JavaScript 中获取斜杠后面的字符串值。 - Adriano
6个回答

198

一种方法:

var lastPart = url.split("/").pop();

1
如果URL以斜杠结尾(例如http://www.example.com/category/action/),我们可以应用过滤器来去除空部分:var lastPart = url.split('/').filter(e => e).pop()。此外,我更喜欢使用slice(-1)而不是pop()来返回最后一部分,因为pop()会返回undefined,而slice(-1)将返回空数组。所以我会这样做:var lastPart = url.split('/').filter(e => e).slice(-1) - kimbaudi

9
假设没有斜杠,您可以按照以下方式获取它:
var url = "http://www.mysite.com/category/action";
var parts = url.split("/");
alert(parts[parts.length-1]);

然而,如果可以有一个尾随斜杠,您可以使用以下内容:

var url = "http://www.mysite.com/category/action/";
var parts = url.split("/");
if (parts[parts.length-1].length==0){
 alert(parts[parts.length-2]);
}else{
  alert(parts[parts.length-1]);  
}

为了处理尾部斜杠,我会通过 / 分割后过滤掉空的部分。然后你可以使用 slice(-1) 获取最后一部分。所以代码如下:var lastPart = url.split('/').filter(e => e).slice(-1); - kimbaudi

6
str.substring(str.lastIndexOf("/") + 1)

如果您的URL可能包含查询或片段,您可能需要执行以下操作:

var end = str.lastIndexOf("#");
if (end >= 0) { str = str.substring(0, end); }
end = str.lastIndexOf("?");
if (end >= 0) { str = str.substring(0, end); }

首先确保你有一个以路径结尾的URL。


1

或者使用正则表达式的方式:

var lastPart = url.replace(/.*\//, ""); //tested in FF 3

或者

var lastPart = url.match(/[^/]*$/)[0]; //tested in FF 3

0

更可靠的资源:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/split - Ates Goral

0

嗯,我能想到的第一件事就是使用 split 函数。

string.split(separator, limit)

既然大家都建议使用split函数,第二种方法是这样的:

var c = "http://www.example.com/category/action";
var l = c.match(/\w+/g)
alert(l)

正则表达式只是一个草稿以便理解。基本上,您可以获得URL中的每个单词。

l = http,www,example,com,category,action

获取最后一个。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接