7

我在以我想要的方式分解字符串时遇到了一些问题。我有一个这样的网址:

http://SomeAddress.whatever:portWhatever/someDirectory/TARGETME/page.html

我正在尝试使用 substring 和 indexOf 而不是正则表达式来获取字符串上的 TARGETME 部分。这是我现在正在使用的功能:

 function lastPartofURL() {
    // Finding Url of Last Page, to hide Error Login Information
    var url = window.location;
    var filename = url.substring(url.lastIndexOf('/')+1);
    alert(filename);
}

但是,当我写这篇文章时,我的目标是“page.html”部分,所以它返回了,但是我无法重新配置它来做我现在想做的事情。

如果可能的话,我希望它起源于字符串的开头而不是结尾,因为在我尝试定位之前应该总是有一个 url,然后是一个目录,但我对这两种解决方案都感兴趣。

这是一个执行类似操作的正则表达式,但它不安全(根据 JSLint),因此我不介意用更实用的东西替换它。

 /^.*\/.*\/TARGETME\/page.html.*/
4

4 回答 4

7

正如其他人已经回答的那样,.split()这对您的情况有好处,但是假设您的意思是返回 URL 的“最后一部分”(例如http://SomeAddress.whatever:portWhatever/dirA/DirB/TARGETME/page.html也返回“TARGETME”),那么您不能使用固定数字,而是取之前的项目数组的最后一个:

function BeforeLastPartofURL() {
    var url = window.location.href;
    var parts = url.split("/");
    var beforeLast = parts[parts.length - 2]; //keep in mind that since array starts with 0, last part is [length - 1]
    alert(beforeLast);
    return beforeLast;
}
于 2013-01-16T13:25:26.700 回答
3

您可以通过string.split()...更轻松地做到这一点

function getPath() {
    var url = window.location;
    var path = url.split("/")[4];
    alert(path);
    return path;
}

我只建议这种方法,因为您说您将始终知道 URL 的格式。

于 2013-01-16T13:18:27.170 回答
1
 function lastPartofURL() {
    // Finding Url of Last Page, to hide Error Login Information
    var url = window.location;
    var arr = url.split('/');

    alert(arr[4]);
 }

这里

于 2013-01-16T13:19:23.663 回答
1

尝试这个

    function lastPartofURL() {
    // Finding Url of Last Page, to hide Error Login Information
    var url = window.location;
    var sIndex = url.lastIndexOf('/');
    var dIndex = url.lastIndexOf('.', sIndex);
    if (dotIndex == -1)
    {
        filename = url.substring(sIndex + 1);
    }
    else
    {
        filename = url.substring(sIndex + 1, dIndex);
    }

    alert(filename);
}
于 2013-01-16T13:19:32.983 回答