我有一个网址,我需要在“商务”之后和页面名称之前获取名称,即“ paradise-villas-little.aspx ” URL。
http://test.com/anc/bussiness/accommo/resort/paradise-villas-little.aspx
我没有得到我怎么能得到这个。我已经尝试过RawUrl,但它已经完整了。请帮帮我怎样才能做到这一点。
更新:这是一种URL,我需要动态检查它。
答案 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.
希望这有帮助