I have three links :
"http//example.com/product/iphone?source=ac"
"http//example.com/product/samsung?source=tz"
"http//example.com/product/sony?source=sn"
I want to split the string to get two variables like so:
var link1 = 'http//example.com/product/iphone';
var link2 = '?source=ac'
// The others are similar
//var link1 = 'http//example.com/product/samsung';
//var link2 = '?source=tz'
//var link1 = 'http//example.com/product/sony';
//var link2 = '?source=sn'
Please give me your opinion, and help me in this case, I'm really new to javascript. It was difficult. Thank you everyone
CodePudding user response:
lnk = "http//example.com/product/iphone?source=ac"
let n = lnk.indexOf("?")
host = lnk.slice(0,n)
source = lnk.slice(n,)
console.log(`host = ${host}`)
console.log(`source = ${source}` )
gives me the output
host = http//example.com/product/iphone
source = ?source=ac
should work with all links as ? is a common factor
or are you looking for regex solution?
CodePudding user response:
Here is a regex based approach using match
:
var urls = ["http://example.com/product/iphone?source=ac", "https://example.com/product/iphone"];
for (var i=0; i < urls.length; i) {
var parts = urls[i].match(/https?:\/\/[^?] |\?.*/g);
console.log(urls[i] "\nurl => " parts[0] ", query => " parts[1]);
}
CodePudding user response:
Consider using URL
API to handle URLs properly:
const path = "http://example.com/product/iphone?source=ac";
const { origin, pathname, search, hash } = new URL(path);
const link1 = origin pathname;
const link2 = search hash;
console.log(link1);
console.log(link2);
CodePudding user response:
I think you want to get the url and query?
let links = [
"http//example.com/product/iphone?source=ac",
"http//example.com/product/samsung?source=tz",
"http//example.com/product/sony?source=sn"
]
links.forEach((x) => {
let [ url, query ] = x.split("?")
console.log(url, "?" query)
})
// http//example.com/product/iphone ?source=ac
// http//example.com/product/samsung ?source=tz
// http//example.com/product/sony ?source=sn
CodePudding user response:
You can use the split function, it gives you an array with the parts. see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split