JavaScript中如何按字符拆分字符串

3

我有三个链接:

"http//example.com/product/iphone?source=ac"
"http//example.com/product/samsung?source=tz"
"http//example.com/product/sony?source=sn"

我想将字符串分割以获取两个变量,就像这样:

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'

请给我您的意见,在这个案例中帮助我,我对JavaScript非常新手,很难。谢谢大家。

请分享一下你目前尝试过的内容。 - JBallin
4个回答

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

给我输出结果

host = http//example.com/product/iphone
source = ?source=ac

应该能够处理所有带有问号的链接,因为问号是一个常见的因素。
或者你正在寻找正则表达式的解决方案?

1
我认为您想获取URL和查询参数?
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

1
这里提供一种基于正则表达式的方法,使用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]);
}


1

考虑使用URL API来正确处理URL:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接