Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Replace last forward slash in string with other character

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.com/about/our-company

to

http://example.com/about#our-company

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
});
like image 311
Staffan Estberg Avatar asked Dec 20 '22 18:12

Staffan Estberg


2 Answers

You can try splitting Url based on /:

url = 'http://example.com/about/our-company';
tokens = url.split('/');
expected_url = tokens.slice(0, tokens.length-1).join('/') + '#' + tokens[tokens.length-1];

console.log(expected_url);
# Prints 'http://example.com/about#our-company'
like image 22
brg Avatar answered Dec 22 '22 08:12

brg


Try 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."

like image 128
Mitya Avatar answered Dec 22 '22 07:12

Mitya