65

My url will look like this:

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

How can I get the word "action". This last part of the url (after the last forward slash "/") will be different each time. So whether its "action" or "adventure", etc. how can I always get the word after the last closing forward slash?

Ates Goral
  • 137,716
  • 26
  • 137
  • 190
Jacob
  • 663
  • 1
  • 5
  • 4
  • related http://stackoverflow.com/questions/8376525/get-value-of-a-string-after-a-slash-in-javascript – Adriano Aug 05 '13 at 07:47

6 Answers6

198

One way:

var lastPart = url.split("/").pop();
Ates Goral
  • 137,716
  • 26
  • 137
  • 190
  • 1
    in case the url has a trailing slash (i.e., `http://www.example.com/category/action/`), we can apply a filter empty parts: `var lastPart = url.split('/').filter(e => e).pop()`. Also, I prefer to use `slice(-1)` instead of `pop()` to return the last part because `pop()` returns `undefined` while `slice(-1)` will return empty array. So I would do: `var lastPart = url.split('/').filter(e => e).slice(-1)` – kimbaudi Jun 17 '19 at 00:03
9

Assuming there is no trailing slash, you could get it like this:

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

However, if there can be a trailing slash, you could use the following:

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]);  
}
Niklas
  • 29,752
  • 5
  • 50
  • 71
  • to handle trailing slash, i would filter out empty parts after splitting by `/`. Then you can get the last part using `slice(-1)`. So it would be: `var lastPart = url.split('/').filter(e => e).slice(-1);` – kimbaudi Jun 17 '19 at 00:05
6
str.substring(str.lastIndexOf("/") + 1)

Though if your URL could contain a query or fragment, you might want to do

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

first to make sure you have a URL with the path at the end.

Mike Samuel
  • 118,113
  • 30
  • 216
  • 245
1

Or the regex way:

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

OR

var lastPart = url.match(/[^/]*$/)[0]; //tested in FF 3
Jonathon
  • 2,571
  • 5
  • 28
  • 49
0

Check out the split method, it does what you want: http://www.w3schools.com/jsref/jsref_split.asp

pfhayes
  • 3,667
  • 3
  • 19
  • 17
0

Well, the first thing I can think of is using the split function.

string.split(separator, limit)

Since everyone suggested the split function, a second way wood be this:

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

The regexp is just a stub to get the idea. Basically you get every words in the url.

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

get the last one.

dierre
  • 7,140
  • 12
  • 75
  • 120