如何拆分URL以获取javascript中的url路径

时间:2016-09-05 16:17:37

标签: javascript

我构建了一个指向不同主机名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]?有没有更快更清洁的方法呢?

4 个答案:

答案 0 :(得分:6)

第一个解决方案(URL对象)

  

URL接口表示提供所用静态方法的对象   用于创建对象URL。

new URL(url)对象也可用于(parse, construct, normalise, encode URLs)等。

你可以像这样使用它。

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)

您可以使用URL API,但支持是可变的。

或者,您可以使用URI.js

两者都允许您获取URL的不同部分,以及从部分构建新的URL。

答案 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