Get value of a string after last slash in JavaScript

JavascriptSubstringIndexofSlash

Javascript Problem Overview


I am already trying for over an hour and cant figure out the right way to do it, although it is probably pretty easy:

I have something like this : foo/bar/test.html

I would like to use jQuery to extract everything after the last /. In the example above the output would be test.html.

I guess it can be done using substr and indexOf(), but I cant find a working solution.

Javascript Solutions


Solution 1 - Javascript

At least three ways:

A regular expression:
var result = /[^/]*$/.exec("foo/bar/test.html")[0];

...which says "grab the series of characters not containing a slash" ([^/]*) at the end of the string ($). Then it grabs the matched characters from the returned match object by indexing into it ([0]); in a match object, the first entry is the whole matched string. No need for capture groups.

Live example

Using lastIndexOf and substring:
var str = "foo/bar/test.html";
var n = str.lastIndexOf('/');
var result = str.substring(n + 1);

lastIndexOf does what it sounds like it does: It finds the index of the last occurrence of a character (well, string) in a string, returning -1 if not found. Nine times out of ten you probably want to check that return value (if (n !== -1)), but in the above since we're adding 1 to it and calling substring, we'd end up doing str.substring(0) which just returns the string.

Using Array#split

Sudhir and Tom Walters have this covered here and here, but just for completeness:

var parts = "foo/bar/test.html".split("/");
var result = parts[parts.length - 1]; // Or parts.pop();

split splits up a string using the given delimiter, returning an array.

The lastIndexOf / substring solution is probably the most efficient (although one always has to be careful saying anything about JavaScript and performance, since the engines vary so radically from each other), but unless you're doing this thousands of times in a loop, it doesn't matter and I'd strive for clarity of code.

Solution 2 - Javascript

You don't need jQuery, and there are a bunch of ways to do it, for example:

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

Where myString contains your string.

Solution 3 - Javascript

Try this:

const url = "files/images/gallery/image.jpg";

console.log(url.split("/").pop());

Solution 4 - Javascript

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

Solution 5 - Javascript

Try;

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

Solution 6 - Javascript

When I know the string is going to be reasonably short then I use the following one liner... (remember to escape backslashes)

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

alert pops up with picture name.jpg

Solution 7 - Javascript

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

Now you have the last.htm in the path string.

Solution 8 - Javascript

light weigh

string.substring(start,end)

where

start = Required. The position where to start the extraction. First character is at index 0`.

end = Optional. The position (up to, but not including) where to end the extraction. If omitted, it extracts the rest of the string.

    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

OR

    var string_after_last_slash = string.substring(start+1);
    console.log(string_after_last_slash);//o/p:- var3

Solution 9 - Javascript

This might be an old thread but I stumbled upon it and found a much nicer option after a while:

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

Solution 10 - Javascript

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

Replace '_' || '/' to your own need

Solution 11 - Javascript

>>> As required in Question::

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

and for question asked on url (asked for one occurence of '=' )::
[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);
  }

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionr0skarView Question on Stackoverflow
Solution 1 - JavascriptT.J. CrowderView Answer on Stackoverflow
Solution 2 - JavascriptTom WaltersView Answer on Stackoverflow
Solution 3 - JavascriptPatrycja PetrykView Answer on Stackoverflow
Solution 4 - JavascriptkasdegaView Answer on Stackoverflow
Solution 5 - JavascriptSudhir BastakotiView Answer on Stackoverflow
Solution 6 - JavascriptDaveAlgerView Answer on Stackoverflow
Solution 7 - JavascriptZar E AhmerView Answer on Stackoverflow
Solution 8 - JavascriptShailesh SonareView Answer on Stackoverflow
Solution 9 - JavascriptJCodingView Answer on Stackoverflow
Solution 10 - JavascriptSMPLYJRView Answer on Stackoverflow
Solution 11 - JavascriptVishal KumarView Answer on Stackoverflow