I'm trying to replace the last forward slash in a series of url strings, to exchange that forward slash for a number sign, like so -
to
Using JS with jQuery I've tried applying the replace function on each string but not sure as how to target just the last forward slash.
$('.submenu a').each(function() {
var url = $(this).attr('href');
url = url.replace(/\//g, '#');
console.log(url);
// replaces all
});
I'm trying to replace the last forward slash in a series of url strings, to exchange that forward slash for a number sign, like so -
http://example./about/our-pany
to
http://example./about#our-pany
Using JS with jQuery I've tried applying the replace function on each string but not sure as how to target just the last forward slash.
$('.submenu a').each(function() {
var url = $(this).attr('href');
url = url.replace(/\//g, '#');
console.log(url);
// replaces all
});
Share
Improve this question
asked Jan 28, 2014 at 12:06
Staffan EstbergStaffan Estberg
7,03517 gold badges75 silver badges108 bronze badges
4 Answers
Reset to default 8Try this:
var str = "http://one/two/three/four";
console.log(str.replace(/\/(?=[^\/]*$)/, '#'));
That says: "replace the slash that is followed by either nothing or characters that do not include another slash, right to the end."
$('.submenu a').each(function() {
var url = $(this).attr('href');
var idx = url.lastIndexOf("/");
url = url.substring(0, idx) + '#' + url.substring(idx+1);
console.log(url);
});
You can try splitting Url based on /
:
url = 'http://example./about/our-pany';
tokens = url.split('/');
expected_url = tokens.slice(0, tokens.length-1).join('/') + '#' + tokens[tokens.length-1];
console.log(expected_url);
# Prints 'http://example./about#our-pany'
A simple solution:
var str="http://example./about/our-pany";
var tmp=str.split("").reverse().join("");
tmp=tmp.replace("/","#");
str=tmp.split("").reverse().join("");
//output:
str = http://example./about#our-pany