Get substring between two last instances of character in url - javascript

I have urls which look like this :http://i1.ytimg.com/vi/BR0Y3MZ21bo/0.jpg. Can someone help me extract the "ID" BR0Y3MZ21bo between the last two slashes in the url?

You can use split(), split will give you array of string being separated by / and your desired string is at second last index of array.
Live Demo
arr = url.split('/');
arr[arr.length-2];

Try this:
var url = 'http://i1.ytimg.com/vi/BR0Y3MZ21bo/0.jpg'; // window.location.href;
var page = url.substr(0, url.lastIndexOf('/')); // output -> http://i1.ytimg.com/vi/BR0Y3MZ21bo
var str = page.substr(page.lastIndexOf('/')+1); // output -> BR0Y3MZ21bo
alert(str); // BR0Y3MZ21bo
FIDDLE

Related

How to get string in path from split?

it didn't work on stackoverflow snippet but if you try on your local you will see it's going to work.
js give me a this result
cdn=//cdn.files.com/web
but I dont want to this line
cdn=
js must give me after from cdn= I mean result must be like this
//cdn.files.com/web
my all js is below so how to do that ?
var scripts = document.getElementsByTagName('script');
var index = scripts.length - 1;
var myScript = scripts[index];
// myScript now contains our script object
var queryString = myScript.src.replace(/^[^\=]+\??/,'');
alert(decodeURIComponent(queryString));
<script src="//domain.com/web/Assets/js/main.js?cdn=%2f%2fcdn.files.com%2fweb"></script>
<p></p>
var s = "cdn=//cdn.files.com/web";
s2 = s.substring(s.indexOf("cdn=")+4,s.length);
alert(s2);
this will substring from the index next to equals character to the end of yours string :)
fixed and tested
Split the string by '?cdn=' and get the part after that(second element in the result array, at index 1).
var queryString = myScript.src.split('?cdn=')[1];
FYI : If there is only one URL param then you can simply use = or cdn= for splitting.
You can use split:
yourvariable.split('=');
So whatever your arguments into GET, the odd param will get your desired result.
PS: Prefer just the = char, because you can work with whatever param you want into link gived by src.
why can't you use ^.+?cdn= in your regex?
this will give you strings after the cdn=
var myScript = '//domain.com/web/Assets/js/main.js?cdn=%2f%2fcdn.files.com%2fweb';
var queryString = myScript.replace(/^.+?cdn=/, '');
console.log(decodeURIComponent(queryString));
Solution with regex
var src = 'cdn=//cdn.files.com/web';
var url = src.replace(/^([^\=]+=)(.*)$/, '$2');
console.log(decodeURIComponent(url));
DEMO with explanation

how to select a some characters from string in javascript

I have a url strings like
"example.com/Apps/Visitor/visitscanner" ,
"example.com/Apps/Seatings/visitscanner
i want to select the directory name after the ""http://example.com/Apps/"
for above example url's, if my url string is "http://example.com/Apps/Visitor/visitscanner" this one, then results should be like "Visitor".
How can i do this in javascript?
you could use split(), like:
var str = "example.com/Apps/Visitor/visitscanner";
var parts = str.split('/');
console.log( parts[parts.length - 2] ); //Visitor
You can do this with regex if you want to match URLs like "http://example.com/Apps/Visitor/visitscanner/foo" or "http://example.com/Apps/Visitor"...
var url = "http://example.com/Apps/Visitor/visitscanner";
var match = /^(https?:\/\/)?example.com\/apps\/([^/]+)/i.exec(url);
var directory = match[2]; // get the second match group ("Visitor")
Live Demo
you can do it with a regex like :-
var url = "http://example.com/Apps/Visitor/visitscanner";
var dirName = /\/\/.+?\/Apps\/(.+?)(?=\/)/g.exec(url)[1];

Get the second last parameter in a url using javascript

I have a url like this
http://example.com/param1/param2/param3
Please help me get the second last parameter using javascript. I searched and could only find regex method to find the last parameter. I am new to this. Any help would be greatly appreciated.
Thanks.
var url = 'http://example.com/param1/param2/param3';
var result= url.split('/');
var Param = result[result.length-2];
Demo Fiddle:http://jsfiddle.net/HApnB/
Split() - Splits the string into an array of strings based on the separator you mentioned
In the above , result will be an array that contains
result = [http:,,example.com,param1,param2,param3];
Basic string operations:
> 'http://example.com/param1/param2/param3'.split('/').slice(-2)[0]
"param2"
You can do this by:
document.URL.split("/");
var url='http://example.com/param1/param2/param3';
var arr = url.split('/');
alert(arr[arr.length-2]);
arr[arr.length-2] will contain value 'param2'. Second last value
var url = "http://example.com/param1/param2/param3";
var params = url.replace(/^http:\/\/,'').split('/'); // beware of the doubleslash
var secondlast = params[params.length-2]; // check for length!!
var url = "http://example.com/param1/param2/param3";
var split = url.split("/");
alert(split[split.length - 2]);
Demo: http://jsfiddle.net/gE7TW/
The -2 is to make sure you always get the second last
My favorite answer is the following from #Blender
'http://example.com/param1/param2/param3'.split('/').slice(-2)[0]
However all answers suffer from the edge case syndrome. Below are the results of applying the above to a number of variants of your input string:
"http://example.com/param1/param2/param3" ==> "param2"
"http://example.com/param1/param2" ==> "param1"
"http://example.com/param1/" ==> "param1"
"http://example.com/param1" ==> "example.com"
"http://example.com" ==> ""
"http://" ==> ""
"http" ==> "http"
Note in particular the cases of the trailing /, the case with only // and the case with no /
Whether these edge cases are acceptable is something you will need to determine within the larger context of your code.
Do not validate this answer, choose from amongst the others.
Just another alternate solution:
var a = document.createElement('a');
a.href = 'http://example.com/param1/param2/param3'
var path = a.pathname;
// get array of params in path
var params = path.replace(/^\/+|\/+$/g, '').split('/');
// gets second from last parameter; returns undefined if not array;
var pop = params.slice(-2)[0];

group parts of a string into an array element

If I have a string... abcdefghi
and I want to use regex to load every elemnent into an array but I want to be able to stick anything connected by plus sign into the same element... how to do that?
var mystring = "abc+d+efghi"
output array ["a","b","cde","f","g","h","i"]
One way to do it:
var re = /([^+])(?:\+[^+])*/g;
var str = 'abcd+e+fghi';
var a = str.match(re).map(function (s) { return s.replace(/\+/g, ''); });
console.log(a);
The value of a[3] should now be 'def'.
http://jsfiddle.net/rbFwR/2
You can use this expression, to produce [a][b][c+d+e][f][g][h][i].
mystring.split ("(.\+)*.")
Next, replace any + characters with empty on the resulting list.
mystring.split("\\+")
Click here for more information.

How do I remove part of a string from a url using JQuery?

How do I remove everything before /post in this string below and add my own address using Javascript/JQuery
showLogo=false&showVersionInfo=false&dataFile=/post/2653785385/photoset_xml/tumblr_lepsihc2RV1qbclqg/500
I want it to appear like this:
http://mydomain.com/post/2653785385/photoset_xml/tumblr_lepsihc2RV1qbclqg/500
var str = 'showLogo=false&showVersionInfo=false&dataFile=/post/2653785385/photoset_xml/tumblr_lepsihc2RV1qbclqg/500';
str = 'http://mydomain.com' + str.split('&dataFile=')[1];
Example: http://jsfiddle.net/52z2z/
Here it splits the string on '&dataFile=', gets the last item in the resulting Array, and concatenates it do your domain.
You could also do this in Javascript using regular expressions:
var url = "showLogo=false&showVersionInfo=false&dataFile=/post/2653785385/photoset_xml/tumblr_lepsihc2RV1qbclqg/500";
var matches = url.match(/dataFile=(.*)/);
var what_you_need = "http://mydomain.com" + matches[1];
HTH

Categories