7

私は私が望む方法で文字列を分解するいくつかの問題を抱えています。私はこのようなURLを持っています:

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と1つのディレクトリが存在する必要があるためですが、両方のソリューションに関心があります。

これは似たようなことをする正規表現ですが、(JSLintによると)安全ではないので、もっと機能的なものに置き換えてもかまいません。

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

4 に答える 4

7

すでに他の人が答えているように、.split()あなたのケースには良いですが、URLの「最後の前の部分」を返すことを意味すると仮定すると(たとえば、「TARGETME」http://SomeAddress.whatever:portWhatever/dirA/DirB/TARGETME/page.htmlも返す)、固定番号を使用することはできず、前にアイテムを取得します配列の最後:

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 に答える