1

i have a url search key like that: ?retailerKey=A and i want to grab the retailerKey substring. All examples that i saw are having as example how to take before the char with the indexOf example. How can i implement this to have this substring from the string ?retailerKey=A

2
  • I've read your question twice and still don't know what's your desired output. Could you clarify? Commented Dec 3, 2021 at 12:59
  • 2
    Besides that, what about using URLSearchParams? Commented Dec 3, 2021 at 13:00

4 Answers 4

2

You could split() the string on any ? or = and take the middle item ([1]) from the outcome array.

const data = "?retailerKey=A";
const result = data.split(/[\?=]/)[1];

console.log(result);

If you have multiple params, creating an object fromEntries() would be interesting.

const data = "?retailerKey=A?otherKey=B";

const keyVals = data.split(/[\?=]/).filter(x => x); // keys and values
const result = Object.fromEntries(keyVals.reduce((acc, val, i) => {
  // create entries
  const chunkI = Math.floor(i / 2);
  if (!acc[chunkI]) acc[chunkI] = [];
  acc[chunkI].push(val);
  return acc;
}, []));

console.log(result);

Sign up to request clarification or add additional context in comments.

Comments

0

use regex expression. Following will return the value between character ? and =

var result =  "?retailerKey=A".match(/\?(.*)\=/).pop();
console.log(result);

Comments

0

If you would like to always get the string between your query sign and equal sign ?ThisString= then you can simply use indexOf for example

str.slice(str.indexOf('?')+1,str.indexOf('='))

Comments

0

Using library could be a better choice but to do it from scratch : I suggest to use split with a regular expression.

// split for char equals to ? or & or =;
const url = '/toto?titi=1&tata=2';
const args = url.split(/[\?\&\=]/);
// shift the first element of the list since it the base url before "?"
args.shift();

// detect malformed url
if (args.length % 2) {
    console.error('malformed url', args);
}

const dictArgs = {};

for (let i = 0; i < args.length /2; i ++) {
     const key = args[2*i];
     const val = args[2*i+1];
     dictArgs[key] = val;
}

console.log(dictArgs);
    

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.