使用C#从URL获取最后两个文件夹的名称

时间:2015-03-13 10:08:04

标签: c# asp.net url

我有一个网址,我需要在“商务”之后和页面名称之前获取名称,即“ paradise-villas-little.aspx ” URL。

http://test.com/anc/bussiness/accommo/resort/paradise-villas-little.aspx

我没有得到我怎么能得到这个。我已经尝试过RawUrl,但它已经完整了。请帮帮我怎样才能做到这一点。

更新:这是一种URL,我需要动态检查它。

3 个答案:

答案 0 :(得分:0)

您可以创建一个小帮手,并从Uri Segments解析网址:

public static class Helper
{
    public static IEnumerable<String> ExtractSegments(this Uri uri, String exclusiveStart)
    {
        bool startFound = false;
        foreach (var seg in uri.Segments.Select(i => i.Replace(@"/","")))
        {
            if (startFound == false)
            {
                if (seg == exclusiveStart)
                    startFound = true;
            }
            else
            {
                if (!seg.Contains("."))
                    yield return seg;
            }
        }
    }
}

并称之为:

Uri uri = new Uri(@"http://test.com/anc/bussiness/accommo/resort/paradise-villas-little.aspx");
var found = uri.ExtractSegments("bussiness").ToList();

然后found包含“accommo”和“resort”,这个方法可以扩展到任何URL长度,最后有或没有文件名。

答案 1 :(得分:0)

这个实现中没有任何复杂的东西,只是常规的字符串操作:

        string url = "http://test.com/anc/bussiness/accommo/resort/paradise-villas-little.aspx";
        string startAfter = "business";
        string pageName = "paradise-villas-little.aspx";
        char delimiter = '/'; //not platform specific

        var from = url.IndexOf(startAfter) + startAfter.Length + 1;
        var to = url.Length - from - pageName.Length - 1;

        var strings = url.Substring(from, to).Split(delimiter);

您可能希望添加验证。

答案 2 :(得分:-1)

您必须使用内置字符串方法。最好的方法是使用String Split。

String url = "http://test.com/anc/bussiness/accommo/resort/paradise-villas-little.aspx";
String[] url_parts = url.Split('/'); //Now you have all the parts of the URL all folders and page. Access the folder names from string array.

希望这有帮助