remove everything before the last occurrence of a character
You have the right idea just replace the brackets with parentheses.
var string = "/Roland/index.php";
var result = string.substring(string.lastIndexOf("/") + 1);
Here is an example in jsfiddle and here is an explanation of the .lastIndexOf() method on the Mozilla Developer Network.
Personally I'd use a regular expression:
var result = string.replace(/^.*\/(.*)$/, "$1");
If you're familiar with regular expressions (and you should be if not :-) then it's not as alien-looking as it is when they're unfamiliar.
The leading ^
forces this regular expression to "anchor" the match at the start of the string. The \/
matches a single /
character (the \
is to keep the /
from confusing the regular expression parser). Then (.*)$
matches everything else from the /
to the end of the string. The initial .*
will swallow up as much as it can, including /
characters before the last one. The replacement text, "$1"
, is a special form that means "the contents of the first matched group". This regex has a group, formed by the parentheses around the last .*
(in (.*)$
). That's going to be all the stuff after the last /
, so the overall result is that the whole string is replaced by just that stuff. (If the pattern doesn't match because there aren't any /
characters, nothing will happen.)
Split the string into an array on /
and .pop()
off the last element. Note, that you will first need to strip off a trailing slash if there is one.
var locationstring = window.location.pathname;
// replace() the trailing / with nothing, split on the remaining /, and pop off the last one
console.log(locationstring.replace(/\/$/, "").split('/').pop());
If in the case of a URL like /path/stuff/here/
where you have the trailing /
, if that case should return an empty string rather than here
, modify the above to remove the .replace()
from the call chain. I assumed you would want the last component regardless of a trailing slash, but may have incorrectly assumed.
console.log(locationstring.split('/').pop());