我构建了一个指向不同主机名import time
t0 = time.time()
# do something
dt = time.time() - t0
的url路径,例如
www.mysite.com
所以这相当于var myMainSite = 'www.mymainsite.com' + '/somepath';
。
我现在如何做,就像下面的代码一样,这给了我一大堆console.log中url的索引。
www.mymainsite.com/path/path/needthispath/somepath
console.log看起来像:
var splitUrl = myMainSite.split('/');
我把它们像0: http://
1: www.
2: mysite.com
3: path
4: path
5: needthispath
6: somepath
那样连在一起,它看起来并不漂亮。
所以我的问题是如何拆分/删除网址[{1}}以获取js中的网址splitUrl[5]+'/'+splitUrl[6]
?有没有更快更清洁的方法呢?
答案 0 :(得分:6)
URL接口表示提供所用静态方法的对象 用于创建对象URL。
new URL(url)
对象也可用于(parse, construct, normalise, encode URLs
)等。
2017年Browser support相当不错(约90%但不是IE11或以下)
你可以像这样使用它。
var url = 'http://www.mymainsite.com/somepath/path2/path3/path4';
var pathname = new URL(url).pathname;
console.log(pathname);
var urlHack = document.createElement('a');
urlHack.href = 'http://www.mymainsite.com/somepath/path2/path3/path4';
console.log(urlHack.pathname);
// you can even call this object with these properties:
// protocol, host, hostname, port, pathname, hash, search, origin
答案 1 :(得分:4)
为什么不使用拆分功能并从那里开始工作。 拆分功能会完全破坏你的网址,你只需要查找倒数第二个和最后一个项目。
以下是一个例子:
var initial_url = 'http://www.mymainsite.com/path/path/needthispath/somepath';
var url = initial_url .split( '/' );
var updated_url= document.location.hostname + '/' + url[ url.length - 2 ] + '/' + url[ url.length - 1 ];
答案 2 :(得分:1)
答案 3 :(得分:0)
function url($url) {
var url = $url.split( '//' );
if (url[0] === "http:" || url[0] === "https:") {
var protocol = url[0] + "//";
var host = url[1].split( '/' )[0];
url = protocol + host;
var path = $url.split(url)[1];
return {
protocol: protocol,
host: host,
path: path
};
}
}
var $url = url("http://www.mymainsite.com/path/path/needthispath/somepath");
console.log($url.protocol); // http://
console.log($url.host); // www.mymainsite.com
console.log($url.path); // /path/path/needthispath/somepath