2

質問: 2 つの類似した文字の間の可変長文字列をどのように判断しますか?

明確にさせてください:

次の 2 つの URL を使用します。

/designs/2012/mobile/v4/~html/ecom/

/designs/2012/mobile/v4/~html/legal/

各行の現在のディレクトリの名前 (ecom、legal、local など) と同じ ID を持つアンカーを構築しようとしています。

したがって、上記のディレクトリは次のようなページになります。

<a href="/designs/2012/mobile/v4/~html/ecom/" id="ecom">/designs/2012/mobile/v4/~html/ecom/</a>
<a href="/designs/2012/mobile/v4/~html/legal/" id="legal">/designs/2012/mobile/v4/~html/legal/</a>

私は .lastIndexOf で遊んでいますが、ほとんど運がありません。(疑似コードを先に警告してください!) 「2 番目を最後に取得し、その文字列と最後の / の間の文字列を引っ張る」と言うことができるかどうかを考えましたが、それを行う方法がよくわかりません。

ヒントや指針はありますか?

これまでの私のコードは次のとおりです。

$(document).ready(function() {
$.ajax({
    url: "./~html",
    success: function(data){
        $(data).find("a").each(function(){
            var path = $(this).attr("href");
            var fileNameIndex = path.lastIndexOf("/") + 1;
            var dirNameIndex = path.lastIndexOf("/");
            var dirNameLength = path.length -1;
            var file = path.substr(fileNameIndex);
            var directory = path.substr(dirNameIndex);
            console.log("length of string: " + dirNameLength);
            console.log("Directory Index: " + dirNameIndex);
            console.log(directory);
            var idIndex = 1;

            if (file != "") {
                $('<li></li>').html('<a href=\"' + path + '\">' + file + '</a>').appendTo('#files');
            } else {
                $('<li></li>').html('<a href=\"' + path + '\"' + 'id=\"' + directory + '\">' + path + '</a>').appendTo('#directories');
            }

        });
    }
});

});

4

2 に答える 2

3

考えられる方法の 1 つは、文字列をスラッシュで分割して配列にすることです。

var path = '/designs/2012/mobile/v4/~html/ecom/';
var components = path.split('/');
var last_part = components[components.length-2];
alert(last_part); // alerts 'ecom'

path.split('/')8 つの項目 ( components.lengthis 8)の配列が得られます。

components[0] = '';
components[1] = 'designs';
components[2] = '2012';
components[3] = 'mobile';
components[4] = 'v4';    
components[5] = '~html';
components[6] = 'ecom';
components[7] = '';
于 2012-08-24T01:33:38.990 に答える
3
var path = '/designs/2012/mobile/v4/~html/ecom/',
    dir = /.*\/(.*)\//.exec( path )[1];
于 2012-08-24T01:36:05.447 に答える