子字符串上的indexOf和lastIndexOf问题-从字符串中获取URL的一部分

Issues with indexOf and lastIndexOf on substring - Get Part of URL from string

本文关键字:字符串 获取 URL 一部分 lastIndexOf indexOf 问题      更新时间:2023-09-26

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

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

我正在尝试使用子字符串和indexOf而不是regex来获取字符串上的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和一个目录,但我对这两种解决方案都感兴趣。

这里有一个regex可以做类似的事情,但它不安全(根据JSLint的说法(,因此我不介意用功能更强大的东西替换它。

 /^.*'/.*'/TARGETME'/page.html.*/

正如其他人已经回答的那样,.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;
}

使用string.split()可以更轻松。。。

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

我只建议使用这种方法,因为你说你永远都知道URL的格式。

试试这个

    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);
}
 function lastPartofURL() {
    // Finding Url of Last Page, to hide Error Login Information
    var url = window.location;
    var arr = url.split('/');
    alert(arr[4]);
 }

请参阅此处