如何确定路径字符串中的当前目录?

时间:2012-08-24 01:30:44

标签: javascript jquery ajax lastindexof

问题:如何确定两个相似字符之间的变长字符串?

请允许我澄清一下:

取两个网址:

/设计/ 2012 /移动/ V4 /〜HTML / ECOM /

/设计/ 2012 /移动/ V4 /〜HTML /法律/

我正在尝试构建一个ID,该ID的ID等于每行当前目录的名称:ecom,legal,local等。

所以上面的目录会产生一个包含以下内容的页面:

<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,但运气不好。我想是否可以说(提前警告伪代码!)“得到倒数第二个/并在中间和最后一个/之间拉出字符串但是我不太确定该怎么做。

任何提示或指示?

到目前为止,这是我的代码:

$(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');
            }

        });
    }
});

});

2 个答案:

答案 0 :(得分:3)

一种可能的方法是通过斜线将字符串拆分为数组:

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.length8):

components[0] = '';
components[1] = 'designs';
components[2] = '2012';
components[3] = 'mobile';
components[4] = 'v4';    
components[5] = '~html';
components[6] = 'ecom';
components[7] = '';

答案 1 :(得分:3)

var path = '/designs/2012/mobile/v4/~html/ecom/',
    dir = /.*\/(.*)\//.exec( path )[1];