Home > Mobile >  node - How to replace part of an url
node - How to replace part of an url

Time:03-30

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?

CodePudding user response:

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}`

CodePudding user response:

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

CodePudding user response:

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

  • Related