-4

我需要一个用 JavaScript 编写的 URL Parser,它的工作原理如下:

假设你有这个 URLhttp://www.somedomain.com/a/b/c

然后该功能parseURL(n)将按如下方式工作:

var paramA = parseURL(1) // Sets paramA to "a"
var paramB = parseURL(2) // Sets paramB to "b"
var paramC = parseURL(3) // Sets paramC to "c"
var paramD = parseURL(4) // Sets paramD to null (because the path does not ripple down to d)

另请注意,如果我传递此 URL http://www.somedomain.com/a/b/c/(请注意,我在 URL 的末尾添加了一个反斜杠),那么该函数仍将以相同的方式工作。

此函数应该适用于任何长度的任何 URL,因此它应该适用于更长的 URL,例如:http://www.somedomain.com/a/b/c/d/e/. 对于这个网址。我们可以上升到parseURL(5)应该返回“e”,但parseURL(6)parseURL(7)都将返回null。

谢谢。

4

3 回答 3

2
function parseURL(i) {
   var t = document.location.pathname.split('/');
   return i < t.length ? t[i] : null;
}

正如 VisioN 所指出的,为了处理结尾/,这个版本会更好:

function parseURL(i) {
   var t = document.location.pathname.replace(/\/+$/, "").split('/');
   return i < t.length ? t[i] : null;
}
于 2013-01-17T17:59:37.850 回答
1

这是一个函数,它将接受一个 url 字符串并返回一个数组。它按照您描述的方式进行索引,除了主机名是索引 0 之外。不确定您是否想要它或 dystroy 写了什么将解析您当前的 URL。

所以parseURL("http://www.somedomain.com/a/b/c/") 你会得到一个数组

urlParts[0] = "www.somedomain.com"
urlParts[1] = "a"
urlParts[2] = "b"
urlParts[3] = "c"

function parseURL(url){
   //strip off the http://
  if(url.indexOf("http://") != -1){
   url = url.slice(7);
  }

   //split the url into sections
   var urlParts = url.split("/");

   return urlParts;
}
于 2013-01-17T18:20:31.993 回答
0

您可以使用URI.js(更具体地说是分段方法),它是一个非常好的用于 URI 解析的 JavaScript 库。

于 2013-01-17T18:00:36.437 回答