user17546097
user17546097

Reputation:

node - How to replace part of an url

I have an array of urls like this:

[
 'https://subdomain1.example.com/foo-bar/', 
 'https://subdomain2.example.com/foo-bar',
 'https://subdomain2.example.com/foo-bar',
 'https://subdomain2.example.com/foo-bar',
 'https://subdomain2.example.com/foo-bar'
]

I need to search inside it to match the user input with the subdomain part of the url, I'm trying with thism line of code to achive it:

 const searched = urlList.find( el => el.includes( match[1].toLocaleLowerCase() ) )
 console.log(searched.length)

If the input is find, I need to replace the second part of the url, in my case /foo-bar with /foo-baz or /foo-baz-bar to obtain a response for the user that is something like https://subdomain2.example.com/foo-bar-baz/.

At the moment I'm not sure how to proceed, is there any function in JS that can help me?

Upvotes: 0

Views: 548

Answers (3)

Rohìt Jíndal
Rohìt Jíndal

Reputation: 27232

You can simply achieve that with a single line of code.

const urlList = [
 'https://subdomain1.example.com/foo-bar/', 
 'https://subdomain2.example.com/foo-bar',
 'https://subdomain2.example.com/foo-bar',
 'https://subdomain2.example.com/foo-bar',
 'https://subdomain2.example.com/foo-bar'
];

const findSubString = 'foo-bar';
const replaceSubString = 'foo-baz';

const res = urlList.map((url) => url.replace(findSubString, replaceSubString));

console.log(res);

Upvotes: 1

Cooper
Cooper

Reputation: 64100

Finding domain and replace part of URL with regex

function foo() {
  let a = ['https://subdomain1.example.com/foo-bar/', 'https://subdomain2.example.com/foo-bar', 'https://subdomain2.example.com/foo-bar', 'https://subdomain2.example.com/foo-bar', 'https://subdomain3.example.com/foo-bar'];
  let seed = 'subdomain2.example.com';
  let repl = 'whatever';

  for (let i = 0; i < a.length; i++) {
    let e = a[i];
    let r = e.match(/\/\/([^\/]+)/);
    if (r[1] == seed) {
      a[i] = e.replace(/(?<=\.\w{3}\/)[a-zA-Z0-9_-]+/, repl);
    }
  }
  //document.getElementById("jj").value = JSON.stringify(a);
  console.log(JSON.stringify(a));
}

Upvotes: 0

user17546097
user17546097

Reputation:

I've found a simple solution and solved the problem Here is my snippet for everyone that in future that need the same thing

    const searched = urlList.find( el => el.includes( match[1].toLocaleLowerCase() ) )
    const url = new URL(searched)
    const host = url.host
    const responseURL = `https://www.${host}${responsePath}`

Upvotes: 0

Related Questions